Index (ดัชนี)

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderators: mindphp, ผู้ดูแลกระดาน

M013
PHP Super Hero Member
PHP Super Hero Member
Posts: 829
Joined: 22/04/2010 12:02 pm

Index (ดัชนี)

Post by M013 »

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

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

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

Code: Select all

SELECT *
FROM Table
WHERE name='Sirirut'
ภาพที่ 1.1 ตัวอย่างหน้าที่ของ Index หรือ ดัชนี
ภาพที่ 1.1 ตัวอย่างหน้าที่ของ Index หรือ ดัชนี
index.jpg (58.77 KiB) Viewed 436 times
***จาก Code ข้างต้นเป็นการค้นหาข้อมูลชื่อ 'Sirirut' โดยการค้นหาจะเริ่มจากจากการเปรียบเทียบข้อมูลเเต่ละเเถวใน Index ว่าเท่ากับ 'Sirirut' หรือเปล่า เมื่อพบเเล้วก็จะได้ตำเเหน่งของข้อมูลที่อยู่ใน Table


การสร้าง Index
รูปแบบการใช้งาน

Code: Select all

CREATE  INDEX  <ชื่ออินเดกซ์>
ON             <ชื่อตาราง>
(<ชื่อคอลัมน์>     [ASC/DESC]);
คำอธิบาย
ASC/DESC การกำหนดข้อมูลว่าจะให้มีการเรียงลำดับอย่างไร ดังนี้
- ASC เป็นการเรียงลำดับจากน้อยไปมาก
- DESC เป็นการเรียงลำดับจากมากไปน้อย

ตัวอย่างการสร้าง Index

Code: Select all

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 434 times
คำอธิบาย
ใน Index จะทำการเก็บื่อลูกค้า เเละตำเเหน่งของข้อมูล ตัวอย่างเช่น เมื่อทำการค้นหาชื่อลูกค้าจะนำชื่อมาเปรียบเทียบในตาราง Index เมื่อเจอก็จะได้ตำแหน่งของตาราง
*** บางกรณี อาจมีชื่อที่ซ้ำกันก็สามารถเพิ่มเข้าไปใน Index ได้
เเต่หากไม่ต้องการให้ซ้ำกันก็สามารถกำจัดชื่อซ้ำออกไปได้โดยการเพิ่มคำสั่ง UNIQUE เข้าไป ดัง code ข้างล่างนี้

Code: Select all

CREATE  UNIQUE INDEX name_inx
ON                   Customer
(cus_name            ASC);

การสร้าง Index โดยใช้หลายคอลัมน์

รูปแบบการใช้งาน

Code: Select all

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 434 times
เพิ่มเติม
การสร้าง Index ไม่จำเป็นต้องมีการสร้างในทุกๆครั้ง เพราะฐานข้อมูลยังมี คีย์หลัก (Primary Key) อยู่
เพราะฉนั้น การสร้าง Index ต้องคำนึงถึงการเรียกใช้ด้วย เช่น การค้นหาข้อมูลลูกค้าโดยค้นหาจากชื่อ อย่างในกรณีนี้ควรมีการสร้าง Index ไว้
เพราะเราจะไม่ตั้งคอลัมน์ชื่อให้เป็นคีย์หลัก เมื่อฐานข้อมูลทำการค้นหาก็จะค้นหาได้ช้า เมื่อเราสร้าง Index ชื่อเอาไว้ ฐานข้อมูลก็จะนำข้อมูลที่ต้องการค้นหามาเปรียบเทียบใน Index เมื่อเจอก็จะทราบตำเเหน่งของข้อมูลที่ต้องการ
  • Similar Topics
    Replies
    Views
    Last post

Return to “SQL Knowledge”

Who is online

Users browsing this forum: No registered users and 3 guests