Database การสร้าง Index เพื่อเพิ่มประสิทธิภาพและความเร็วของฐานข้อมูล

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

ตัวอย่าง

เพื่อให้เห็นความชัดเจนยิ่งขึ้นเราจะมาทำการสร้าง Index กันครับ ก่อนอื่นเลยโหลด Database จาก ลิ้งนี้ (เป็นฐานข้อมูล ตำบล อำเภอ และจังหวัดของประเทศไทย)

ตัวอย่างโค้ด SQL

เมื่อเราทำการ Download เสร็จแล้วให้นำเข้าฐานข้อมูล จากนั้นทำการค้นหาข้อมูลโดยใช้โค้ด SQL

SELECT * FROM district WHERE DISTRICT_NAME = 'โนนรัง';
ความเร็วในการค้นหาข้อมูลก่อนทำ Index ใน Feild DISTRICT_NAME

ความเร็วในการค้นหาข้อมูลอยู่ที่ 0.0423 sec เป็นการค้นหาก่อนทำ Index ต่อมาเราจะทำการสร้าง Index ใน DISTRICT_NAME โดยใช้โค้ด SQL

ALTER TABLE district ADD KEY (DISTRICT_NAME);

จากนั้นใช้โค้ด SQL ค้นหาแบบเดิมอีกที

SELECT * FROM district WHERE DISTRICT_NAME = 'โนนรัง';
ความเร็วในการค้นหาข้อมูลหลังทำ Index ใน Feild DISTRICT_NAME

ความเร็วในการค้นหาข้อมูลอยู่ที่ 0.0010 sec เป็นการค้นหาหลังทำ Index แล้ว ได้ผลที่น่าประทับใจเป็นอย่างมาก

จากตัวอย่างนี้ ทำให้เห็นว่าการทำ Index เวลาค้นหาข้อมูลเป็นที่น่าประทับใจ แต่การทำ Index จะทำให้การ Insert, Update แบะ Delete ทำงานช้าลงเล็กน้อย ซึ่งเป็นข้อเสียของการทำ Index ดังนั้นการทำฐานข้อมูลขึ้นมาชุดหนึ่งควรออกแบบด้วยว่าตารางไหนควรมีหรือไม่มี Index เพื่อประสิทธิภาพของฐานข้อมูลครับ