7 ข้อควรระวัง! ก่อนสร้าง Index ใน MySQL

7 things to be careful! Before creating index in MySQL

การทำ Index (ดัชนี) ใน MySQL เป็นเทคนิคยอดนิยมที่ช่วยให้การค้นหาข้อมูลทำได้รวดเร็วขึ้น เหมือนการใส่สารบัญให้กับหนังสือหนาๆ ไม่ต้องไล่อ่านทีละหน้าให้เสียเวลา

แต่! หลายคนมักเข้าใจผิดว่า “ใส่ Index เยอะๆ แล้วจะเร็วขึ้นเสมอ

ความจริงคือ ถ้าใช้ Index ไม่ถูกวิธี อาจทำให้ระบบช้าลงกว่าเดิม และกินทรัพยากรโดยไม่จำเป็น

บทความนี้จะพาคุณไปดูว่า…มีอะไรบ้างที่ควร “ระวัง” ก่อนจะใส่ Index ลงไปใน MySQL
เพื่อให้ฐานข้อมูลของคุณทั้ง “เร็ว” และ “คุ้มค่า”

1. ใช้ Index อย่างพอเหมาะ

01 Use Index Appropriately

การมี Index มากเกินไปจะทำให้คำสั่ง INSERT, UPDATE, DELETE ช้าลง เพราะต้องอัปเดตทุก Index ทุกครั้งที่มีการเปลี่ยนแปลงข้อมูล
แนะนำให้สร้างเฉพาะ Index ที่ใช้กับ WHERE, JOIN หรือ ORDER BY

2. เลือกคอลัมน์ที่เหมาะสม

02 Select Appropriate Column

หลีกเลี่ยงการทำ Index กับคอลัมน์ที่มี ค่าซ้ำสูง (low cardinality) เช่น gender, status
ควรใช้กับคอลัมน์ที่มีค่าแตกต่างกันมาก (high cardinality)

3. ขนาดของ Index มีผลต่อขนาดฐานข้อมูล

03 Size index affects databases

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

4. ไม่ใช่ทุก Query จะใช้ Index ได้

04 Not all queries can use indexes

คำสั่งที่ใช้ LIKE ‘%value%‘ หรือ WHERE YEAR(date_column) = 2023 มักไม่สามารถใช้ Index
หากจำเป็น ควรใช้ generated columns หรือฟังก์ชันที่ Index รองรับ

5. Composite Index ต้องจัดลำดับให้ถูก

05 Composite index correctly

ตัวอย่างเช่น Index (a, b) จะใช้ได้เฉพาะกับ WHERE a=… หรือ a=… AND b=…
หาก query ใช้เฉพาะ b จะไม่สามารถใช้ Index ได้

6. ORDER BY ต้องเรียงลำดับให้ตรงกับ Index

06 ORDER BY match Index

หากมีหลายคอลัมน์ใน ORDER BY และลำดับไม่ตรงกับ Index
Index จะไม่มีผลต่อการเร่งความเร็วของ query

7. Index มีผลต่อ Query Optimizer

07 Index affects query optimizer

แม้จะมี Index อยู่ แต่ MySQL อาจตัดสินใจทำ full table scan หากประเมินว่าเร็วกว่า
ควรใช้ EXPLAIN เพื่อตรวจสอบทุกครั้งว่า Index ถูกใช้จริง

คำแนะนำเพิ่มเติม

  • ใช้ EXPLAIN SELECT … เพื่อตรวจสอบการใช้งาน Index
  • ใช้ SHOW INDEX FROM table_name ดู Index ที่มีอยู่
  • ลบ Index ที่ไม่จำเป็นด้วย DROP INDEX เพื่อประสิทธิภาพสูงสุด

หากคุณกำลังมองหา Web Hosting ที่รองรับ MySQL อย่างเสถียรและรวดเร็ว
hostatom ให้บริการโฮสติ้งที่มาพร้อมระบบฐานข้อมูล MySQL ที่ได้รับการปรับแต่งให้ทำงานได้เต็มประสิทธิภาพ รองรับทั้งเว็บไซต์ทั่วไปและระบบขนาดใหญ่

Was this article helpful?

Related Articles