ที่มา : http://spalinux.com/2008/06/indexing_mysql_database
ปัญหานี้เกิดจากตอนได้ทำงานกับข้อมูลจังหวัด อำเภอ ตำบล หมู่บ้าน ทั่วประเทศ การ Join กันแต่ละที ใช้เวลานานมาก
ปัญหาแรกคือ Maximum execution time of 30 seconds exceeded เกิดจากการประมวลผลคำสั่งที่นานเกินไป วิธีแก้คือใส่คำสั่งนี้ไว้บนสุดของหน้าเว็บ ส่วนวิธีที่ให้ไปแก้ php.ini ผมว่าใช้จริงกับ host ไม่ได้หรอกครับ เพราะเราไม่สามารถเข้าไปแก้ php.ini ใน host ได้จริงๆ
สำหรับการทำ index ในฐานข้อมูล ผมจับประเด็นได้แค่ว่า
- ทำ index กับฟิลด์ที่ใช้ค้นหาบ่อยๆ หรือใช้เป็นเงื่อนไขการ JOIN TABLE
ยกตัวอย่าง ฐานข้อมุลที่ผมได้ใช้งาน
เวลา join ตารางทั้งหมดมันจะช้ามาก หลังจากทำแล้วเร็วขึ้นมาก
สำหรับการทำจะใช้ phpmyadmin ก็ได้ หรือว่าโปรแกรม SQL Client อื่นๆ เช่น SQLyog ก็ได้ครับ
- ไม่จำเป็นเสมอไป หลังจากทำ index แล้วจะเร็วขึ้น ขึ้นอยู่กับการออกแบบฐานข้อมูลและคำสั่งที่ใช้ค้นหาด้วย
เรื่องนี้ผมเห็นด้วยครับ สำหรับงานบางงานผมไม่ได้เป้นคนออกแบบฐานข้อมูล แต่เป้นคนใช้ฐานข้อมูลก็จำเป้นต้องหาวิธีของตัวเอง เพื่อให้การทำงานเร้วและสะดวกที่สุด
เอาเป็นว่าอย่างน้อยๆ ตอนนี้ ก็พอเข้าใจเรื่องการทำ Index มานิดหน่อยแล้วครับ
No comments: