ในการพัฒนา Web Application ที่ใช้ PHP และ MySQL เมื่อต้องการปรับปรุงประสิทธิภาพ Query ที่ทำงานช้าบนตารางขนาดใหญ่ กลยุทธ์ใดที่ถูกต้องและมีประสิทธิภาพสูงสุดในสถานการณ์ที่ซับซ้อน?
กวิเคราะห์ด้วย EXPLAIN เพื่อดู Query Execution Plan เลือกเพิ่ม Index บน Column ที่ใช้ใน WHERE/JOIN/ORDER BY รวมทั้งพิจารณา Query Rewrite, Caching และ Partitioning ตามบริบท
ขเพิ่ม Index ให้กับทุก Column ในตาราง เพื่อให้ Query ทุก Column ทำงานได้เร็ว
คเพิ่ม RAM ให้เซิร์ฟเวอร์เป็นวิธีเดียวที่แก้ปัญหาประสิทธิภาพฐานข้อมูลได้อย่างแท้จริง
งเปลี่ยนไปใช้ SELECT * แทน SELECT column ในทุก Query เพื่อลด Overhead ในการระบุชื่อ Column แต่ละตัว โดยเชื่อว่าฐานข้อมูลจะดึงข้อมูลทั้งหมดมาไว้ใน Buffer ได้เร็วกว่าและ MySQL Optimizer จะจัดการเลือกเฉพาะ Column ที่จำเป็นให้เองโดยอัตโนมัติ ทำให้ไม่จำเป็นต้องพิจารณาการทำ Index, EXPLAIN, Caching หรือ Partitioning อีกต่อไป
เฉลยอธิบาย
การปรับแต่งประสิทธิภาพ Query ต้องเริ่มจาก EXPLAIN หรือ EXPLAIN ANALYZE เพื่อดู Execution Plan ว่า MySQL ใช้ Index หรือ Full Table Scan จากนั้นเพิ่ม Index เฉพาะ Column ที่ใช้บ่อยใน WHERE, JOIN, ORDER BY, GROUP BY ตัวเลือก A ผิดเพราะ Index มากเกินไปทำให้การ INSERT/UPDATE/DELETE ช้าลง และใช้พื้นที่เพิ่ม, C ผิดเพราะ SELECT * ดึงข้อมูลมากกว่าจำเป็นทำให้ช้ากว่า และ D ผิดเพราะ Hardware Upgrade เป็นทางเลือกสุดท้าย ไม่ใช่วิธีแก้ปัญหาที่ถูกต้องในเชิงวิศวกรรม