Index (ดัชนี)
Index หรือดัชนีในฐานข้อมูลก็ทำหน้าที่เหมือนกับ Index ในหนังสือ เพื่อช่วยเพิ่มความสามารถของฐานข้อมูล
ในการค้นหาข้อมูลที่ต้องการให้มีความรวดเร็วยิ่งขึ้น
ยกตัวอย่างเช่น หนังสือเล่มหนึ่งมีจำนวนหน้า 1000 หน้า หากเราไม่มี Index เราก็จะต้องหาข้อมูลที่ต้องการทั้งหมด 1000 หน้าจนกว่าจะเจอ
เเต่หากเรามี Index เราก็ดูเพียง Index ว่าข้อมูลที่เราต้องการอยู่หน้าที่เท่าไร
*** จะเห็นว่า Index มีส่วนเข้ามาช่วยค้นหาข้อมูลให้มีความรวดเร็วยิ่งขึ้น
การ SELECT ข้อมูลด้วยการใช้ Index
- ภาพที่ 1.1 ตัวอย่างหน้าที่ของ Index หรือ ดัชนี
- index.jpg (58.77 KiB) Viewed 2193 times
***จาก Code ข้างต้นเป็นการค้นหาข้อมูลชื่อ 'Sirirut' โดยการค้นหาจะ
เริ่มจากจากการเปรียบเทียบข้อมูลเเต่ละเเถวใน Index ว่าเท่ากับ 'Sirirut' หรือเปล่า เมื่อพบเเล้วก็จะได้ตำเเหน่งของข้อมูลที่อยู่ใน Table
การสร้าง Index
รูปแบบการใช้งาน
โค้ด: เลือกทั้งหมด
CREATE INDEX <ชื่ออินเดกซ์>
ON <ชื่อตาราง>
(<ชื่อคอลัมน์> [ASC/DESC]);
คำอธิบาย
ASC/DESC การกำหนดข้อมูลว่าจะให้มีการเรียงลำดับอย่างไร ดังนี้
- ASC เป็นการเรียงลำดับจากน้อยไปมาก
- DESC เป็นการเรียงลำดับจากมากไปน้อย
ตัวอย่างการสร้าง Index
โค้ด: เลือกทั้งหมด
CREATE INDEX name_inx
ON Customer
(cus_name ASC);
>> สร้าง Index ชื่อ name_inx ทำงานบนตาราง Customer โดยกำหนดให้คอลัมน์ที่เป็น Index เรียงลำดับจากน้อยไปมาก
- ภาพที่ 1.2 ตาราง Index(ดัชนี) และ ตารางข้อมูลลูกค้า
- create_index.jpg (158.28 KiB) Viewed 2191 times
คำอธิบาย
ใน Index จะทำการเก็บื่อลูกค้า เเละตำเเหน่งของข้อมูล
ตัวอย่างเช่น เมื่อทำการค้นหาชื่อลูกค้าจะนำชื่อมาเปรียบเทียบในตาราง Index เมื่อเจอก็จะได้ตำแหน่งของตาราง
*** บางกรณี อาจมีชื่อที่ซ้ำกันก็สามารถเพิ่มเข้าไปใน Index ได้
เเต่หากไม่ต้องการให้ซ้ำกันก็สามารถกำจัดชื่อซ้ำออกไปได้โดยการเพิ่มคำสั่ง UNIQUE เข้าไป ดัง code ข้างล่างนี้
โค้ด: เลือกทั้งหมด
CREATE UNIQUE INDEX name_inx
ON Customer
(cus_name ASC);
การสร้าง Index โดยใช้หลายคอลัมน์
รูปแบบการใช้งาน
โค้ด: เลือกทั้งหมด
CREATE INDEX <ชื่ออินเดกซ์>
ON <ชื่อตาราง>
(<ชื่อคอลัมน์1>,<ชื่อคอลัมน์2>);
>> สร้าง Index ชื่อ name_inx ทำงานบนตาราง Customer โดยใช้คอลัมน์ชื่อ และ นามสกุล เป็น Index
- ภาพที่ 1.3 ตัวอย่างการใช้ Index หลายคอลัมน์
- create_multi_column_index.jpg (159.81 KiB) Viewed 2191 times
เพิ่มเติม
การสร้าง Index ไม่จำเป็นต้องมีการสร้างในทุกๆครั้ง เพราะฐานข้อมูลยังมี
คีย์หลัก (Primary Key) อยู่
เพราะฉนั้น การสร้าง Index ต้องคำนึงถึงการเรียกใช้ด้วย เช่น การค้นหาข้อมูลลูกค้าโดยค้นหาจากชื่อ อย่างในกรณีนี้ควรมีการสร้าง Index ไว้
เพราะเราจะไม่ตั้งคอลัมน์ชื่อให้เป็นคีย์หลัก เมื่อฐานข้อมูลทำการค้นหาก็จะค้นหาได้ช้า เมื่อเราสร้าง Index ชื่อเอาไว้ ฐานข้อมูลก็จะนำข้อมูลที่ต้องการค้นหามาเปรียบเทียบใน Index เมื่อเจอก็จะทราบตำเเหน่งของข้อมูลที่ต้องการ