การทำดัชนีใน DBMS: คืออะไร ประเภทของดัชนีพร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
การทำดัชนีในฐานข้อมูลเป็นเทคนิคโครงสร้างข้อมูลที่ช่วยให้ดึงข้อมูลระเบียนได้อย่างรวดเร็วโดยใช้แผนที่ping คีย์ค้นหาไปยังที่อยู่บนดิสก์ของระเบียนนั้น ดัชนีแบบหลัก แบบรอง แบบคลัสเตอร์ แบบหลายระดับ และแบบบีทรี แต่ละแบบมีพื้นที่ใช้งาน ความเร็ว และการบำรุงรักษาที่แตกต่างกัน

การทำดัชนีคืออะไร?
การจัดทำดัชนี ดัชนีเป็นเทคนิคโครงสร้างข้อมูลที่ช่วยให้คุณสามารถดึงข้อมูลจากไฟล์ฐานข้อมูลได้อย่างรวดเร็ว ดัชนีเป็นตารางขนาดเล็กที่มีเพียงสองคอลัมน์ คอลัมน์แรกประกอบด้วยสำเนาของคีย์หลักหรือคีย์ผู้สมัครของตาราง คอลัมน์ที่สองประกอบด้วยชุดของ ชี้ ซึ่งเก็บที่อยู่ของบล็อกดิสก์ที่เก็บค่าคีย์เฉพาะนั้นไว้
สารบัญ:
- รับคีย์ค้นหาเป็นอินพุต
- ส่งคืนคอลเลกชันของเรกคอร์ดที่ตรงกันอย่างมีประสิทธิภาพ
หากไม่มีดัชนี ฐานข้อมูลจะต้องสแกนทุกแถวเพื่อตอบคำถาม แต่หากมีดัชนี ฐานข้อมูลจะข้ามไปยังบล็อกที่ตรงกันโดยตรง ซึ่งเป็นเหตุผลว่าทำไมประเภทของดัชนีที่เลือกจึงมีผลอย่างมากต่อประสิทธิภาพ
ประเภทของการจัดทำดัชนีใน DBMS

การสร้างดัชนีในฐานข้อมูลนั้นกำหนดขึ้นจากคุณลักษณะของการสร้างดัชนี วิธีการสร้างดัชนีหลักๆ มีสองประเภท ได้แก่:
- การจัดทำดัชนีเบื้องต้น
- การจัดทำดัชนีรอง
ดัชนีหลักใน DBMS
ดัชนีหลักเป็นไฟล์ที่มีการเรียงลำดับ มีความยาวคงที่ และประกอบด้วยสองฟิลด์ ฟิลด์แรกเหมือนกับคีย์หลัก และฟิลด์ที่สองชี้ไปยังบล็อกข้อมูลเฉพาะนั้น ในดัชนีหลัก จะมีความสัมพันธ์แบบหนึ่งต่อหนึ่งเสมอระหว่างรายการในตารางดัชนี
ดัชนีหลักยังแบ่งออกเป็นสองประเภทเพิ่มเติมอีกด้วย:
- ดัชนีหนาแน่น
- ดัชนีกระจัดกระจาย
ดัชนีหนาแน่น
ในดัชนีแบบหนาแน่น จะมีการสร้างเรคอร์ดสำหรับทุกค่าของคีย์ค้นหาในฐานข้อมูล วิธีนี้ช่วยให้คุณค้นหาได้เร็วขึ้น แต่ต้องการพื้นที่มากขึ้นในการจัดเก็บเรคอร์ดดัชนี ในวิธีนี้ เรคอร์ดจะประกอบด้วยค่าของคีย์ค้นหาและชี้ไปยังเรคอร์ดจริงบนดิสก์
ดัชนีกระจัดกระจาย
ดัชนีแบบเบาบาง (Sparse index) คือระเบียนดัชนีที่ปรากฏเฉพาะสำหรับบางค่าในไฟล์เท่านั้น ดัชนีแบบเบาบางช่วยแก้ปัญหาของดัชนีแบบหนาแน่น (Dense indexing) ได้ DBMSในเทคนิคนี้ ช่วงของคอลัมน์ดัชนีจะจัดเก็บที่อยู่บล็อกข้อมูลเดียวกัน และเมื่อต้องการดึงข้อมูล ที่อยู่บล็อกนั้นจะถูกดึงมาใช้
ดัชนีแบบเบาบาง (Sparse Index) จัดเก็บระเบียนดัชนีสำหรับค่าคีย์ค้นหาเพียงบางค่าเท่านั้น ใช้พื้นที่น้อยกว่าและมีค่าใช้จ่ายในการบำรุงรักษาน้อยกว่าสำหรับการแทรกและการลบ แต่จะทำงานช้ากว่าดัชนีแบบหนาแน่น (Dense Index) ในการค้นหาระเบียน
ด้านล่างนี้คือตัวอย่างดัชนีฐานข้อมูลแบบสปาร์ส (sparse index)
ดัชนีหนาแน่นเทียบกับดัชนีเบาบาง
ดัชนีหลักทั้งสองแบบมีข้อดีข้อเสียที่ตรงกันข้ามกัน ซึ่งสรุปไว้ด้านล่างนี้
| แง่มุม | ดัชนีหนาแน่น | ดัชนีกระจัดกระจาย |
|---|---|---|
| รายการ | หนึ่งรายการต่อคีย์การค้นหา | หนึ่งชิ้นต่อบล็อก |
| ช่องว่าง | เพิ่มเติม | Less |
| ความเร็วในการค้นหา | ได้เร็วขึ้น | ช้าลง |
| ซ่อมบำรุง | สูงกว่า | ลด |
ดัชนีรองใน DBMS
ดัชนีรองในระบบจัดการฐานข้อมูล (DBMS) สามารถสร้างขึ้นได้จากฟิลด์ที่มีค่าเฉพาะตัวสำหรับแต่ละระเบียน และควรเป็นคีย์หลัก (candidate key) เรียกอีกอย่างว่าดัชนีที่ไม่จัดกลุ่ม (non-clustering index)
เทคนิคการจัดทำดัชนีฐานข้อมูลสองระดับนี้ใช้เพื่อลดขนาดของแผนที่ping ขนาดของระดับแรก สำหรับระดับแรก จะมีการเลือกช่วงตัวเลขขนาดใหญ่ ดังนั้นแผนที่ping ขนาดจะยังคงเล็กอยู่เสมอ
ตัวอย่างดัชนีรอง
เรามาทำความเข้าใจเรื่องการทำดัชนีรองด้วยตัวอย่างดัชนีฐานข้อมูลกัน ในฐานข้อมูลบัญชีธนาคาร ข้อมูลจะถูกจัดเก็บตามลำดับโดยใช้หมายเลขบัญชี แต่คุณอาจต้องการค้นหาบัญชีทั้งหมดในสาขาเฉพาะของธนาคาร ABC
ในส่วนนี้ คุณสามารถสร้างดัชนีรองสำหรับแต่ละคีย์การค้นหาได้ โดยระเบียนดัชนีจะชี้ไปยังบัคเก็ตที่ประกอบด้วยตัวชี้ไปยังระเบียนทั้งหมดที่มีค่าคีย์การค้นหานั้นๆ
Clusterการทำดัชนีใน DBMS
ในดัชนีแบบคลัสเตอร์ ข้อมูลจริงจะถูกจัดเก็บไว้ในดัชนี ไม่ใช่ตัวชี้ บางครั้งดัชนีถูกสร้างขึ้นบนคอลัมน์ที่ไม่ใช่คีย์หลัก ซึ่งอาจไม่ซ้ำกันสำหรับแต่ละข้อมูล ในกรณีเช่นนี้ คุณสามารถจัดกลุ่มคอลัมน์สองคอลัมน์ขึ้นไปเพื่อให้ได้ค่าที่ไม่ซ้ำกันและสร้างดัชนี ซึ่งเรียกว่าดัชนีแบบคลัสเตอร์ วิธีนี้ช่วยให้คุณระบุข้อมูลได้เร็วขึ้นเช่นกัน
ตัวอย่าง: สมมติว่าบริษัทแห่งหนึ่งได้ว่าจ้างพนักงานจำนวนมากในแผนกต่างๆ ในกรณีนี้ จำเป็นต้องสร้างดัชนีการจัดกลุ่มสำหรับพนักงานทั้งหมดที่อยู่ในแผนกเดียวกัน
ถือว่าเป็นคลัสเตอร์เดียวกัน และดัชนีชี้ไปยังคลัสเตอร์โดยรวม ในที่นี้ Department_no เป็นคีย์ที่ไม่ซ้ำกัน
ดัชนีหลายระดับคืออะไร?
การสร้างดัชนีแบบหลายระดับเกิดขึ้นเมื่อดัชนีหลักไม่สามารถจัดเก็บในหน่วยความจำได้ วิธีการสร้างดัชนีแบบนี้ช่วยลดจำนวนการเข้าถึงดิสก์เพื่อเข้าถึงข้อมูลแต่ละเรคอร์ดได้ ข้อมูลจะถูกเก็บไว้ในดิสก์ในรูปแบบไฟล์เรียงลำดับ และจะสร้างดัชนีแบบเบาบาง (sparse index) ทับซ้อนอยู่บนไฟล์นั้น
ดัชนีบีทรี
ดัชนีแบบ B-tree เป็นโครงสร้างข้อมูลที่ใช้กันอย่างแพร่หลายที่สุดสำหรับการทำดัชนีแบบต้นไม้ในระบบจัดการฐานข้อมูล (DBMS) เป็นรูปแบบการทำดัชนีแบบต้นไม้หลายระดับที่ใช้ความสมดุล ต้นไม้ค้นหาแบบไบนารีโหนดใบทั้งหมดของ B-tree จะเก็บตัวชี้ข้อมูลจริงไว้
นอกจากนี้ โหนดใบทั้งหมดเชื่อมโยงกันด้วยรายการเชื่อมโยง ซึ่งทำให้ B-tree สามารถรองรับการเข้าถึงได้ทั้งแบบสุ่มและแบบเรียงลำดับ
- โหนดใบต้องมีค่าระหว่าง 2 ถึง 4 ค่า
- เส้นทางจากรากถึงใบส่วนใหญ่มีความยาวเท่ากัน
- โหนดที่ไม่ใช่ใบนอกจากโหนดรากจะมีโหนดลูกระหว่าง 3 ถึง 5 โหนด
- โหนดทุกโหนดที่ไม่ใช่โหนดรากหรือโหนดใบจะมีโหนดลูกระหว่าง n/2 ถึง n โหนด
ในกรณีที่การค้นหาแบบตรงกันทุกประการเป็นที่นิยม และการค้นหาแบบช่วงค่ามีน้อย hashing อาจเป็นทางเลือกที่เร็วกว่าดัชนีแบบ B-tree
ข้อดีของการจัดทำดัชนี
ข้อดีที่สำคัญของการจัดทำดัชนีมีดังนี้:
- วิธีนี้ช่วยลดจำนวนการดำเนินการ I/O โดยรวมที่จำเป็นในการดึงข้อมูล ดังนั้นคุณจึงไม่จำเป็นต้องเข้าถึงแถวโดยตรงจากตาราง
- ช่วยให้ผู้ใช้สามารถค้นหาและเรียกดูข้อมูลได้รวดเร็วยิ่งขึ้น
- วิธีนี้จะช่วยลดพื้นที่จัดเก็บข้อมูล เนื่องจากไม่จำเป็นต้องเก็บ ROWID ไว้ในดัชนีสำหรับทุกแถวที่เชื่อมโยงกัน
- ข้อมูลในโหนดใบจะถูกจัดเรียงตามค่าของคีย์เรียบร้อยแล้ว
ข้อเสียของการจัดทำดัชนี
ข้อเสียที่สำคัญของการทำดัชนีมีดังนี้:
- ในการสร้างดัชนี คุณต้องมีคีย์หลักในตารางที่มีค่าที่ไม่ซ้ำกัน
- คุณไม่สามารถสร้างดัชนีใหม่บนข้อมูลที่จัดระเบียบด้วยดัชนีแบบเดียวกันอยู่แล้วได้
- คุณไม่ได้รับอนุญาตให้แบ่งพาร์ติชันตารางที่จัดดัชนี
- การสร้างดัชนีจะลดประสิทธิภาพในคำสั่ง INSERT, DELETE และ UPDATE





