MySQL การใช้งานคำสั่ง CREATE INDEX

CREATE INDEX เป็นคำสั่งใน MySQL ที่ใช้สำหรับสร้าง “ดัชนี” (Index) บนคอลัมน์ของตาราง เพื่อช่วยให้การค้นหาข้อมูล (SELECT, WHERE, ORDER BY, JOIN) ทำงานได้เร็วขึ้น โดยเฉพาะเมื่อตารางมีข้อมูลจำนวนมาก ระบบจะใช้ Index ในการค้นหาข้อมูลแทนการไล่ดูทุกแถวทีละแถว (full table scan) ซึ่งช่วยเพิ่มประสิทธิภาพของฐานข้อมูลได้อย่างมาก

ประโยชน์ของ Index

  • เพิ่มความเร็วในการค้นหา (Query Performance)
  • ช่วยให้ WHERE, ORDER BY, JOIN, GROUP BY ทำงานเร็วขึ้น
  • ลดภาระในการประมวลผลข้อมูลจำนวนมาก

รูปแบบการใช้งาน

CREATE INDEX index_name
ON table_name (column1, column2, ...);
  • index_name ชื่อของ index (ตั้งเองได้)
  • table_name ชื่อตารางที่ต้องการสร้าง index
  • (column1, ...) คอลัมน์ที่ต้องการสร้าง index

ตัวอย่างการใช้งาน

สร้าง Index ที่คอลัมน์เดียว

SQL
CREATE INDEX idx_last_name
ON customers (last_name);
  • ช่วยให้ค้นหาลูกค้าจาก last_name ได้เร็วขึ้น

สร้าง Index แบบหลายคอลัมน์ (Composite Index)

SQL
CREATE INDEX idx_name_city
ON customers (last_name, city);
  • ช่วยเพิ่มความเร็วในการค้นหาเมื่อใช้ WHERE last_name = ... AND city = ...

ตรวจสอบ Index ที่มีอยู่

SQL
SHOW INDEX FROM customers;
  • แสดงรายชื่อ index ทั้งหมดในตาราง customers

Index ประเภทต่าง ๆ ใน MySQL

  • INDEX หรือ KEY ดัชนีทั่วไป
  • UNIQUE INDEX – ดัชนีที่ห้ามค่าซ้ำ
  • FULLTEXT INDEX – สำหรับการค้นหาข้อความแบบเต็ม (Full-Text Search)
  • SPATIAL INDEX – สำหรับข้อมูลเชิงพื้นที่ (ใช้กับ GEOMETRY)

ข้อควรระวังในการใช้ Index

  • การสร้าง Index มากเกินไป จะทำให้การเพิ่ม (INSERT) และแก้ไข (UPDATE, DELETE) ข้อมูลช้าลง
  • ควรสร้าง Index เฉพาะคอลัมน์ที่ถูกใช้งานบ่อยใน WHERE, JOIN, ORDER BY
  • ไม่จำเป็นต้องสร้าง Index ซ้ำกับ PRIMARY KEY หรือ UNIQUE เพราะระบบจะสร้างให้โดยอัตโนมัติ

ตัวอย่างการใช้ Index ให้เหมาะสม

SQL
SELECT * FROM customers
WHERE last_name = 'Wong' AND city = 'Bangkok';
  • ถ้าตาราง customers มี Index บน (last_name, city) คำสั่งนี้จะทำงานเร็วขึ้นมาก
แชร์เรื่องนี้