MySQL index column

From P&T Knowledgebase
Jump to navigation Jump to search

บทนำ

  • สำหรับผู้ที่พัฒนาเว็บไซต์ด้วยตัวเอง และมีการใช้ฐานข้อมูลด้วย สิ่งสำคัญอย่างหนึ่งที่คุณรู้จัก ก็คือการทำ Index ให้กับ Column ในตารางครับ.
  • ประโยชน์ของการทำ Index ก็คือจะช่วยให้ MySQL สามารถ query ข้อมูลได้เร็วขึ้นครับ ซึ่งเร็วขึ้นเป็น 100 เท่าเลยทีเดียวนะครับ.
  • ถ้าเว็บไซต์ของคุณคนเข้าไม่เยอะ คุณจะไม่เห็นความแตกต่างเท่าไหร่ เพราะว่าตารางที่ไม่ Index อาจจะใช้เวลา Query ประมาณ 1 วินาที ในขณะที่ตารางที่ถูก Index จะใช้เวลาประมาณ 0.001 - 0.01 วินาทีครับ ซึ่งความแตกต่างตรงนี้ คนเข้าเว็บไซต์อาจจะไม่ได้รู้สึกอะไรครับ. แต่ถ้าเว็บไซต์ของคุณต้องรอรับปริมาณคนเข้ามหาศาล ความแตกต่างตรงนี้จะมีผลมากครับ เพราะถ้าใช้เวลา Query นาน ตัวเซิร์ฟเวอร์ก็จะทำงานไม่ทันกับจำนวน Request ที่เข้ามาครับ.
  • แล้วต้อง Index column ไหนบ้าง? ... แน่นอนว่า คุณไม่ควร Index ทุกๆ Column ครับ เพราะถ้า Index เยอะ เวลาที่ Insert ข้อมูลลงตาราง ก็จะทำงานนานขึ้นครับ เพราะว่ามันต้องเสียเวลาในการ Index แต่ละ Column ด้วย.   ดังนั้นที่ดีที่สุด คือ คุณจะต้องเลือก Index เฉพาะ column ที่คุณจะต้องใช้เป็นเงื่อนไขการ Where ใน SQL ครับ.   แต่ก็ไม่จำเป็นว่าอะไรที่ใช้ Where ก็ต้อง Index ให้หมดนะครับ เพราะสมมติว่า เรามี SQL อันนึง ที่จะรันแค่วันละ 1 ครั้ง เราก็ไม่จำเป็นต้อง Index column ที่อยู่ใน SQL ดังกล่าวก็ได้ครับ เพราะว่ามันทำงานแค่วันละครั้งเอง ไม่คุ้มกับ Overhead ที่ต้องเสียไปกับทุกการ Insert ตลอดทั้งวัน.
  • สำหรับ Column ที่เป็น Primary Key ไม่จำเป็นต้อง Index นะครับ   เพราะว่า Primary Key นั้นจะถูก Indexโดยอัตโนมัติอยู่แล้วครับ

วิธีการทำ Index

ตรงคู่มือนี้จะอธิบายเป็นขั้นตอนการทำ Index ผ่าน phpMyAdmin นะครับ

  1. ขั้นแรกก็ล็อคอินเข้า phpMyAdmin แล้วไปที่ ฐานข้อมูล ของคุณเลยครับ
  2. ไปที่หน้าโครงสร้าง (Structure) ของตารางที่ต้องการจะแก้ไข
  3. ในหน้า โครงสร้าง (Structure) มันจะแสดงแต่ละคอลัมน์ในตาราง ให้ดูที่ด้านขวามือมันจะมีลิงก์ที่เขียนว่า "ดัชนี (Index)" ดังภาพ ( *** ถ้ามองไม่เห็น แสดงว่าจออาจจะแคบไป แล้ว phpMyAdmin มันเลยยุบลิงก์เหล่านั้นเป็นเมนูดรอปดาวน์ ให้เอาเมาส์ไป hover ก็จะเจอลิงก์ Index ครับ)

    2016-01-30_56acac4f05371.jpg
  4. หาบรรทัดของ Column ที่ต้องการจะทำอินเด็ก แล้วก็คลิกตรงคำว่า Index ในบรรทัดนั้นได้เลยครับ (ถ้าเป็นเมนูไทย จะเป็นคำว่า ดัชนี )