วันนี้ได้มีโอกาสมีจับเจ้าฐานข้อมูลตอนนี้ มีขนาดใหญ่ เลยถือโอกาสทำ Index เลย เพราะเริ่ม Query ช้าแล้ว ดังนั้นเราจะพูดถึงขั้นตอนการสร้าง Index ใน MySQL พร้อมทั้งอธิบายการพิจารณาการเลือกฟิลด์เพื่อทำ Index รวมถึงข้อดีและข้อเสียในการใช้งาน Index ครับ
ขั้นตอนการทำ Index
- การวิเคราะห์ Query
เริ่มต้นด้วยการวิเคราะห์ Query ที่ต้องการใช้ดึงข้อมูล ซึ่งในที่นี้มี Query ที่ใช้สำหรับดึงข้อมูลจากหลายตาราง ดังนี้
SELECT *
FROM user, provinces, service_center, tb_name_status, u_group
WHERE user.user_prov = provinces.code
AND user.user_center = service_center.center_id
AND user.user_level = tb_name_status.name_en
AND user.user_group = u_group.group_id
LIMIT 2498;
-
การเลือกฟิลด์สำหรับทำ Index
การเลือกฟิลด์ที่เหมาะสมสำหรับการทำ Index เป็นสิ่งสำคัญ โดยทั่วไป ควรเลือกฟิลด์ที่
- ถูกใช้ในการ Join ตาราง เช่น user.user_prov, user.user_center, user.user_level, และ user.user_group
- คอลัมน์ที่มีการใช้ใน WHERE clause หรือในเงื่อนไขการกรองข้อมูล
ในตัวอย่างนี้ เราได้เลือกทำ Index ในฟิลด์ต่อไปนี้
-- สร้าง Index สำหรับตาราง user
CREATE INDEX idx_user_prov ON user(user_prov);
CREATE INDEX idx_user_center ON user(user_center);
CREATE INDEX idx_user_level ON user(user_level);
CREATE INDEX idx_user_group ON user(user_group);
-- สร้าง Index สำหรับตาราง provinces
CREATE INDEX idx_provinces_code ON provinces(code);
-- สร้าง Index สำหรับตาราง service_center
CREATE INDEX idx_service_center_center_id ON service_center(center_id);
-- สร้าง Index สำหรับตาราง tb_name_status
CREATE INDEX idx_tb_name_status_name_en ON tb_name_status(name_en);
-- สร้าง Index สำหรับตาราง u_group
CREATE INDEX idx_u_group_group_id ON u_group(group_id);
- การทดสอบประสิทธิภาพ
หลังจากที่สร้าง Index เสร็จแล้ว ให้ทดสอบ Query อีกครั้งเพื่อเปรียบเทียบเวลาในการประมวลผลก่อนและหลังการสร้าง Index
ผลลัพธ์จากการ Query
Before: 0.0309 วินาที
After: 0.0177 วินาที
การลดเวลาในการประมวลผลจาก 0.0309 วินาที เป็น 0.0177 วินาที แสดงให้เห็นว่า Index ช่วยเพิ่มประสิทธิภาพการค้นหาได้จริง นี่เป็นตัวเลขคราวๆเท่านั้นนะครับ
ข้อดี
- Index จะช่วยให้ระบบสามารถค้นหาข้อมูลได้เร็วขึ้น โดยเฉพาะในกรณีที่มีข้อมูลจำนวนมาก
- ทำให้ใช้ CPU น้อยลงในระยะยาว
ข้อเสีย
- Index จะใช้พื้นที่ในฐานข้อมูลมากขึ้น
- การเพิ่มหรือแก้ไขข้อมูลในตารางที่มี Index จะใช้เวลานานขึ้น เนื่องจากต้องทำการปรับปรุง Index ด้วย
สรุป
การทำ Index ใน MySQL เป็นวิธีที่มีประสิทธิภาพในการเพิ่มความเร็วในการค้นหาข้อมูลในฐานข้อมูล โดยเฉพาะอย่างยิ่งเมื่อมีข้อมูลจำนวนมาก การเลือกฟิลด์ที่เหมาะสมในการทำ Index จะช่วยให้คุณได้รับประสิทธิภาพที่ดีที่สุด อย่างไรก็ตาม ควรพิจารณาข้อดีและข้อเสียในการใช้งาน Index เพื่อให้ได้ผลลัพธ์ที่เหมาะสมกับระบบครับ