อัปเดตสถิติดัชนี (Key Distribution)
Query Optimizer ใช้สถิติเพื่อตัดสินใจ: JOIN order, Index selection ผิดพลาด → Query ช้า
เมื่อสถิติล้าสมัย
- หลัง INSERT/UPDATE/DELETE จำนวนมาก
- Key distribution ไม่ตรงกับข้อมูลจริง
- Optimizer เลือกแผนการรัน Query ที่ไม่เหมาะสม
คำสั่งแก้ไข
ANALYZE TABLE table_name;
ตัวอย่าง
mysql> ANALYZE TABLE student_info\G
*************************** 1. row ***************************
Table: query.student_info
Op: analyze
Msg_type: status
Msg_text: OK
1 row in set (0.22 sec)
คำสั่งเทียบเท่าจาก Command Line
mysqlcheck -u root --analyze db_name
เมื่อควรรัน
- หลังโหลดข้อมูลมาก (Bulk insert)
- หลังปรับโครงสร้างตาราง (ALTER TABLE)
- ตารางที่มีการ UPDATE/DELETE บ่อย
- ตารางใหญ่ที่ Query เริ่มช้าลง
ข้อควรระวัง
- ล็อคตารางระหว่างรัน (READ LOCK)
- อาจใช้เวลานานกับตารางใหญ่
- InnoDB: สถิติเป็นประมาณการ (sampling) ไม่ได้นับทุกแถว