ทำไมเราต้องทำ Index ใน MySQL

·

วันนี้ได้มีโอกาสมีจับเจ้าฐานข้อมูลตอนนี้ มีขนาดใหญ่ เลยถือโอกาสทำ Index เลย เพราะเริ่ม Query ช้าแล้ว ดังนั้นเราจะพูดถึงขั้นตอนการสร้าง Index ใน MySQL พร้อมทั้งอธิบายการพิจารณาการเลือกฟิลด์เพื่อทำ Index รวมถึงข้อดีและข้อเสียในการใช้งาน Index ครับ

ขั้นตอนการทำ Index

  1. การวิเคราะห์ 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;

  1. การเลือกฟิลด์สำหรับทำ 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);
    
  1. การทดสอบประสิทธิภาพ

หลังจากที่สร้าง Index เสร็จแล้ว ให้ทดสอบ Query อีกครั้งเพื่อเปรียบเทียบเวลาในการประมวลผลก่อนและหลังการสร้าง Index

ผลลัพธ์จากการ Query

Before: 0.0309 วินาที
After: 0.0177 วินาที

การลดเวลาในการประมวลผลจาก 0.0309 วินาที เป็น 0.0177 วินาที แสดงให้เห็นว่า Index ช่วยเพิ่มประสิทธิภาพการค้นหาได้จริง นี่เป็นตัวเลขคราวๆเท่านั้นนะครับ

ข้อดี

  • Index จะช่วยให้ระบบสามารถค้นหาข้อมูลได้เร็วขึ้น โดยเฉพาะในกรณีที่มีข้อมูลจำนวนมาก
  • ทำให้ใช้ CPU น้อยลงในระยะยาว

ข้อเสีย

  • Index จะใช้พื้นที่ในฐานข้อมูลมากขึ้น
  • การเพิ่มหรือแก้ไขข้อมูลในตารางที่มี Index จะใช้เวลานานขึ้น เนื่องจากต้องทำการปรับปรุง Index ด้วย

สรุป

การทำ Index ใน MySQL เป็นวิธีที่มีประสิทธิภาพในการเพิ่มความเร็วในการค้นหาข้อมูลในฐานข้อมูล โดยเฉพาะอย่างยิ่งเมื่อมีข้อมูลจำนวนมาก การเลือกฟิลด์ที่เหมาะสมในการทำ Index จะช่วยให้คุณได้รับประสิทธิภาพที่ดีที่สุด อย่างไรก็ตาม ควรพิจารณาข้อดีและข้อเสียในการใช้งาน Index เพื่อให้ได้ผลลัพธ์ที่เหมาะสมกับระบบครับ

🚀 เรารับทำเว็บไซต์คุณภาพสูง

พร้อมบริการหลังการขายและรับประกันผลงาน

จ้างเราผ่าน Fastwork