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)คำสั่งนี้จะทำงานเร็วขึ้นมาก