Index (ดัชนี) ในตารางของฐานข้อมูล คืออะไร

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: Index (ดัชนี) ในตารางของฐานข้อมูล คืออะไร

Index (ดัชนี) ในตารางของฐานข้อมูล คืออะไร

โดย M013 » 26/08/2013 2:51 pm

Index (ดัชนี)
Index หรือดัชนีในฐานข้อมูลก็ทำหน้าที่เหมือนกับ Index ในหนังสือ เพื่อช่วยเพิ่มความสามารถของฐานข้อมูล
ในการค้นหาข้อมูลที่ต้องการให้มีความรวดเร็วยิ่งขึ้น

ยกตัวอย่างเช่น หนังสือเล่มหนึ่งมีจำนวนหน้า 1000 หน้า หากเราไม่มี Index เราก็จะต้องหาข้อมูลที่ต้องการทั้งหมด 1000 หน้าจนกว่าจะเจอ
เเต่หากเรามี Index เราก็ดูเพียง Index ว่าข้อมูลที่เราต้องการอยู่หน้าที่เท่าไร
*** จะเห็นว่า Index มีส่วนเข้ามาช่วยค้นหาข้อมูลให้มีความรวดเร็วยิ่งขึ้น

การ SELECT ข้อมูลด้วยการใช้ Index

โค้ด: เลือกทั้งหมด

SELECT *
FROM Table
WHERE name='Sirirut'
ภาพที่ 1.1 ตัวอย่างหน้าที่ของ 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(ดัชนี) และ ตารางข้อมูลลูกค้า
ภาพที่ 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 หลายคอลัมน์
ภาพที่ 1.3 ตัวอย่างการใช้ Index หลายคอลัมน์
create_multi_column_index.jpg (159.81 KiB) Viewed 2191 times
เพิ่มเติม
การสร้าง Index ไม่จำเป็นต้องมีการสร้างในทุกๆครั้ง เพราะฐานข้อมูลยังมี คีย์หลัก (Primary Key) อยู่
เพราะฉนั้น การสร้าง Index ต้องคำนึงถึงการเรียกใช้ด้วย เช่น การค้นหาข้อมูลลูกค้าโดยค้นหาจากชื่อ อย่างในกรณีนี้ควรมีการสร้าง Index ไว้
เพราะเราจะไม่ตั้งคอลัมน์ชื่อให้เป็นคีย์หลัก เมื่อฐานข้อมูลทำการค้นหาก็จะค้นหาได้ช้า เมื่อเราสร้าง Index ชื่อเอาไว้ ฐานข้อมูลก็จะนำข้อมูลที่ต้องการค้นหามาเปรียบเทียบใน Index เมื่อเจอก็จะทราบตำเเหน่งของข้อมูลที่ต้องการ

ข้างบน