1. MySQL Index คืออะไร? กุญแจสำคัญในการปรับปรุงประสิทธิภาพฐานข้อมูล
โดยการใช้ดัชนีในฐานข้อมูล MySQL อย่างมีประสิทธิภาพ คุณสามารถปรับปรุงประสิทธิภาพการสืบค้นได้อย่างมาก ดัชนีเป็นโครงสร้างข้อมูลที่สร้างบนคอลัมน์เฉพาะในตารางฐานข้อมูลเพื่อเพิ่มความเร็วในการค้นหาและการกรอง ตัวอย่างเช่น เมื่อดึงข้อมูลเฉพาะจากชุดข้อมูลขนาดใหญ่ การใช้ดัชนีทำให้ MySQL ข้ามการสแกนทุกแถวและค้นหาเฉพาะคอลัมน์ที่มีดัชนีเท่านั้น
บทบาทและประเภทของดัชนี
MySQL มีประเภทดัชนีต่อไปนี้:
- PRIMARY (Primary Key) : กุญแจที่เป็นเอกลักษณ์และสามารถมีได้เพียงครั้งเดียวต่อหนึ่งตาราง ใช้เป็นตัวระบุหลักของตาราง
- UNIQUE Index : ดัชนีที่บังคับให้ค่าต้องไม่ซ้ำกันและป้องกันไม่ให้มีค่าซ้ำถูกแทรกลงในคอลัมน์ที่ระบุ
- Regular Index : ดัชนีที่ไม่มีข้อจำกัดความเป็นเอกลักษณ์ ใช้เพื่อปรับปรุงประสิทธิภาพการค้นหาบนคอลัมน์เฉพาะ
ดังที่แสดงด้านบน ดัชนีช่วยเพิ่มประสิทธิภาพการค้นหาและการดำเนินการข้อมูลบนตารางและเป็นสิ่งจำเป็นสำหรับชุดข้อมูลขนาดใหญ่ อย่างไรก็ตาม การมีดัชนีมากเกินไปอาจทำให้การทำงาน INSERT และ UPDATE ช้าลง ดังนั้นการจัดการดัชนีอย่างเหมาะสมจึงสำคัญ
2. วิธีพื้นฐานในการตรวจสอบดัชนีใน MySQL
ใน MySQL คุณสามารถใช้คำสั่ง SHOW INDEX เพื่อตรวจสอบดัชนีที่มีอยู่ คำสั่ง SQL ง่าย ๆ นี้จะแสดงข้อมูลดัชนีสำหรับตารางที่ระบุ ขั้นตอนเฉพาะจะอธิบายด้านล่างนี้
ไวยากรณ์พื้นฐานและผลลัพธ์ของ SHOW INDEX
SHOW INDEX FROM table_name;
คำอธิบายคอลัมน์ผลลัพธ์
เมื่อคุณรันคำสั่งนี้ ข้อมูลต่อไปนี้จะถูกแสดง:
- Table : ชื่อของตารางที่มีดัชนีอยู่
- Non_unique : ระบุว่าดัชนีอนุญาตให้มีค่าซ้ำ (1) หรือเป็นดัชนีเอกลักษณ์ (0)
- Key_name : ชื่อของดัชนี
- Column_name : ชื่อของคอลัมน์ที่ดัชนีถูกนำไปใช้
- Cardinality : การประมาณจำนวนค่าที่ไม่ซ้ำกันในดัชนี ใช้เป็นตัวบ่งชี้ประสิทธิภาพการค้นหา
โดยใช้ข้อมูลนี้ คุณสามารถเข้าใจสถานะดัชนีภายในตารางและวิธีที่ดัชนีถูกนำไปใช้กับแต่ละคอลัมน์ได้อย่างชัดเจน คุณยังสามารถจำกัดผลลัพธ์โดยใช้เงื่อนไข WHERE หากจำเป็น
3. การตรวจสอบดัชนีโดยใช้ตาราง INFORMATION_SCHEMA.STATISTICS
นอกเหนือจากคำสั่ง SHOW INDEX แล้ว MySQL ยังอนุญาตให้คุณตรวจสอบดัชนีโดยการสืบค้นตาราง INFORMATION_SCHEMA.STATISTICS วิธีนี้มีประโยชน์สำหรับการแสดงรายการดัชนีทั่วทั้งฐานข้อมูลและให้ข้อมูลรายละเอียดมากขึ้น
คำสืบค้นพื้นฐานสำหรับ INFORMATION_SCHEMA.STATISTICS
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'database_name';
รายละเอียดของผลลัพธ์การสืบค้น
- TABLE_SCHEMA : ชื่อของฐานข้อมูลที่ดัชนีเป็นส่วนหนึ่ง
- TABLE_NAME : ชื่อของตารางที่มีดัชนีอยู่
- COLUMN_NAME : ชื่อของคอลัมน์ที่ดัชนีถูกนำไปใช้
- INDEX_NAME : ชื่อของดัชนี
วิธีนี้ทำให้คุณสามารถดูข้อมูลดัชนีข้ามหลายตารางหรือฐานข้อมูลเฉพาะในรายการเดียวได้ โดยเฉพาะอย่างยิ่งมีประโยชน์เมื่อจัดการดัชนีทั่วทั้งฐานข้อมูล 
4. วิธีเพิ่มและลบดัชนีและผลกระทบของมัน
วิธีเพิ่มดัชนี
คุณสามารถเพิ่มดัชนีในภายหลังตามความต้องการ ใช้คำสั่งต่อไปนี้เพื่อสร้างดัชนีบนคอลัมน์ที่ระบุ:
CREATE INDEX index_name ON table_name(column_name);
ตัวอย่างเช่น หากต้องการเพิ่มดัชนีให้กับคอลัมน์ email ของตาราง users ให้รันคำสั่งต่อไปนี้:
CREATE INDEX idx_email ON users(email);
วิธีลบดัชนี
คุณสามารถลบดัชนีที่ไม่จำเป็นเพื่อเพิ่มประสิทธิภาพการทำงานของ INSERT และ UPDATE ใช้คำสั่ง DROP INDEX เพื่อลบดัชนี:
DROP INDEX index_name ON table_name;
ตัวอย่างของดัชนีที่ไม่จำเป็นคือดัชนีที่สร้างบนคอลัมน์ที่ไม่ได้ใช้ในเงื่อนไขการค้นหา (คลอส WHERE) การลบดัชนีเช่นนี้สามารถปรับปรุงความเร็วในการแทรกและอัปเดตข้อมูลได้
5. การตรวจสอบประสิทธิภาพของดัชนีโดยใช้คำสั่ง EXPLAIN
คำสั่ง EXPLAIN ของ MySQL มีประโยชน์ในการตรวจสอบแผนการดำเนินการของคิวรีและระบุว่าดัชนีใดกำลังถูกใช้ ซึ่งช่วยประเมินประสิทธิภาพของดัชนีและปรับแต่งประสิทธิภาพเมื่อจำเป็น
การใช้งานพื้นฐานของคำสั่ง EXPLAIN
EXPLAIN SELECT * FROM table_name WHERE column_name = 'condition';
โดยใช้คำสั่งนี้ คุณสามารถตรวจสอบได้ว่าดัชนีกำลังถูกใช้หรือว่ามีการสแกนตารางทั้งหมด ผลลัพธ์จะประกอบด้วยคอลัมน์ต่อไปนี้:
- type : ประเภทของคิวรี (ALL หมายถึงการสแกนตารางทั้งหมด; INDEX หมายถึงใช้ดัชนี)
- possible_keys : รายการดัชนีที่อาจใช้ได้สำหรับคิวรี
- key : ชื่อของดัชนีที่ถูกใช้จริง
- rows : จำนวนแถวที่คาดว่าจะสแกน
จากข้อมูลนี้ คุณสามารถวิเคราะห์ประสิทธิภาพของดัชนีและตัดสินใจว่าจำเป็นต้องปรับปรุงประสิทธิภาพการค้นหาหรือไม่
6. สรุป
การจัดการดัชนีอย่างเหมาะสมเป็นสิ่งสำคัญสำหรับการเพิ่มประสิทธิภาพของฐานข้อมูล MySQL โดยเฉพาะอย่างยิ่งสำหรับตารางที่จัดการข้อมูลจำนวนมาก การตั้งดัชนีบนคอลัมน์ที่ใช้ในคลอส WHERE และการทำ JOIN สามารถปรับปรุงประสิทธิภาพการค้นหาได้อย่างมาก อย่างไรก็ตาม การมีดัชนีมากเกินไปอาจทำให้การแทรกและอัปเดตข้อมูลช้าลง ดังนั้นการรักษาสมดุลที่เหมาะสมจึงเป็นสิ่งสำคัญ
โดยการทำความเข้าใจวิธีการเพิ่ม, ตรวจสอบ, ลบและประเมินดัชนี คุณจะสามารถปรับแต่งฐานข้อมูลของคุณได้ง่ายขึ้นและเพิ่มประสิทธิภาพของระบบโดยรวม

