อ่าน 4 นาที
ดัชนีฐานข้อมูล
ดัชนี ฐานข้อมูล เป็น โครงสร้างข้อมูล ที่ช่วยเพิ่มความเร็วในการดำเนินการเรียกค้นข้อมูลใน ตารางฐานข้อมูล...
ดัชนีฐานข้อมูล
ดัชนีฐานข้อมูลเป็นโครงสร้างข้อมูลที่ช่วยเพิ่มความเร็วในการดำเนินการเรียกค้นข้อมูลในตารางฐานข้อมูลโดยแลกกับการเขียนเพิ่มเติมและพื้นที่จัดเก็บเพื่อบำรุงรักษาโครงสร้างข้อมูลดัชนี[ 1 ] ดัชนีใช้เพื่อค้นหาข้อมูลได้อย่างรวดเร็วโดยไม่ต้องค้นหาทุกแถวในตารางฐานข้อมูลทุกครั้งที่มีการเข้าถึงตารางดังกล่าว ดัชนีสามารถสร้างได้โดยใช้คอลัมน์หนึ่งคอลัมน์หรือมากกว่าของตารางฐานข้อมูลซึ่งเป็นพื้นฐานสำหรับการค้นหา แบบสุ่มอย่างรวดเร็ว และการเข้าถึงระเบียนที่เรียงลำดับอย่างมีประสิทธิภาพ
ดัชนีคือสำเนาของคอลัมน์ข้อมูลที่เลือกจากตาราง ซึ่งออกแบบมาเพื่อให้การค้นหามีประสิทธิภาพสูง ดัชนีโดยทั่วไปจะรวมถึง "คีย์" หรือลิงก์โดยตรงไปยังแถวข้อมูลต้นฉบับที่คัดลอกมา เพื่อให้สามารถดึงข้อมูลทั้งแถวได้อย่างมีประสิทธิภาพ ฐานข้อมูลบางแห่งเพิ่มประสิทธิภาพของดัชนีโดยอนุญาตให้นักพัฒนาสร้างดัชนีบนค่าคอลัมน์ที่ได้รับการแปลงโดยฟังก์ชันหรือนิพจน์ตัวอย่างเช่น สามารถสร้างดัชนีบนupper(last_name)ซึ่งจะจัดเก็บเฉพาะเวอร์ชันตัวพิมพ์ใหญ่ของlast_nameฟิลด์ในดัชนีเท่านั้น อีกทางเลือกหนึ่งที่บางครั้งรองรับคือการใช้ดัชนีบางส่วนซึ่งจะสร้างรายการดัชนีเฉพาะสำหรับระเบียนที่ตรงตามเงื่อนไขบางอย่างเท่านั้น ความยืดหยุ่นอีกประการหนึ่งคือการอนุญาตให้สร้างดัชนีบนฟังก์ชันที่ผู้ใช้กำหนดเองรวมถึงนิพจน์ที่สร้างขึ้นจากฟังก์ชันในตัวต่างๆ
การใช้งาน
รองรับการค้นหาอย่างรวดเร็ว
ซอฟต์แวร์ ฐานข้อมูลส่วนใหญ่มีเทคโนโลยีการสร้างดัชนีที่ช่วยให้การค้นหาใช้เวลาน้อยกว่าเชิงเส้น เพื่อปรับปรุงประสิทธิภาพ เนื่องจากการค้นหาเชิงเส้นไม่มีประสิทธิภาพสำหรับฐานข้อมูลขนาดใหญ่
สมมติว่าฐานข้อมูลมีข้อมูล N รายการ และจำเป็นต้องดึงข้อมูลหนึ่งรายการโดยอิงจากค่าของฟิลด์ใดฟิลด์หนึ่ง การใช้งานแบบง่ายๆ จะดึงข้อมูลและตรวจสอบแต่ละรายการตามเงื่อนไข หากมีรายการที่ตรงกันเพียงรายการเดียว กระบวนการจะหยุดเมื่อพบรายการนั้น แต่หากมีรายการที่ตรงกันหลายรายการ กระบวนการจะต้องตรวจสอบทุกรายการ ซึ่งหมายความว่าจำนวนการดำเนินการในกรณีเฉลี่ยคือO (N) หรือเวลาเชิงเส้นเนื่องจากฐานข้อมูลอาจมีวัตถุจำนวนมาก และเนื่องจากการค้นหาเป็นการดำเนินการทั่วไป จึงมักเป็นที่ต้องการที่จะปรับปรุงประสิทธิภาพ
ดัชนีคือโครงสร้างข้อมูลใดๆ ที่ช่วยปรับปรุงประสิทธิภาพการค้นหา มีโครงสร้างข้อมูล หลายประเภท ที่ใช้เพื่อจุดประสงค์นี้ มีการแลกเปลี่ยนที่ซับซ้อนในการออกแบบที่เกี่ยวข้องกับประสิทธิภาพการค้นหา ขนาดของดัชนี และประสิทธิภาพการอัปเดตดัชนี การออกแบบดัชนีหลายแบบแสดงให้เห็นถึงประสิทธิภาพการค้นหาแบบลอการิทึม ( O (log(N))) และในบางแอปพลิเคชันก็สามารถบรรลุประสิทธิภาพแบบราบเรียบ ( O (1)) ได้
การควบคุมข้อจำกัดของฐานข้อมูล
ดัชนีใช้สำหรับตรวจสอบข้อจำกัดของฐานข้อมูลเช่น UNIQUE, EXCLUSION, PRIMARY KEYและFOREIGN KEYดัชนีอาจถูกประกาศเป็น UNIQUE ซึ่งจะสร้างข้อจำกัดโดยปริยายบนตารางที่เกี่ยวข้อง ระบบฐานข้อมูลมักจะสร้างดัชนีโดยปริยายบนชุดคอลัมน์ที่ประกาศเป็น PRIMARY KEY และบางระบบสามารถใช้ดัชนีที่มีอยู่แล้วเพื่อตรวจสอบข้อจำกัดนี้ได้ ระบบฐานข้อมูลหลายระบบกำหนดให้ทั้งชุดคอลัมน์ที่อ้างอิงและชุดคอลัมน์ที่ถูกอ้างอิงในข้อจำกัด FOREIGN KEY ต้องมีดัชนี เพื่อปรับปรุงประสิทธิภาพการแทรก การอัปเดต และการลบข้อมูลในตารางที่เกี่ยวข้องกับข้อจำกัดนั้น
ระบบฐานข้อมูลบางระบบรองรับข้อจำกัดการยกเว้น (EXCLUSION constraint) ที่รับประกันว่าสำหรับระเบียนที่แทรกหรืออัปเดตใหม่ เงื่อนไขบางอย่างจะไม่เป็นจริงสำหรับระเบียนอื่น สามารถใช้เพื่อใช้งานข้อจำกัด UNIQUE (ด้วยเงื่อนไขความเท่าเทียมกัน) หรือข้อจำกัดที่ซับซ้อนกว่า เช่น การรับประกันว่าจะไม่มีช่วงเวลาที่ทับซ้อนกันหรือไม่มีวัตถุเรขาคณิตที่ตัดกันถูกจัดเก็บในตาราง จำเป็นต้องมีดัชนีที่รองรับการค้นหาระเบียนที่ตรงตามเงื่อนไขอย่างรวดเร็วเพื่อตรวจสอบข้อจำกัดดังกล่าว[ 2 ]
โครงสร้างดัชนีและวิธีการสร้างดัชนี
ไม่มีการจัดกลุ่ม
ข้อมูลอาจเรียงลำดับแบบสุ่ม แต่ลำดับเชิงตรรกะถูกกำหนดโดยดัชนี แถวข้อมูลอาจกระจายอยู่ทั่วตารางโดยไม่คำนึงถึงค่าของคอลัมน์หรือนิพจน์ที่ใช้สร้างดัชนี โครงสร้างดัชนีแบบไม่คลัสเตอร์ประกอบด้วยคีย์ดัชนีที่เรียงลำดับแล้ว โดยระดับใบของดัชนีจะมีตัวชี้ไปยังระเบียน (หมายเลขหน้าและหมายเลขแถวในหน้าข้อมูลในเอนจินที่จัดเรียงตามหน้า หรือค่าออฟเซ็ตแถวในเอนจินที่จัดเรียงตามไฟล์)
ในดัชนีที่ไม่จัดกลุ่ม
- ลำดับทางกายภาพของแถวไม่เหมือนกับลำดับดัชนี
- โดยทั่วไปแล้ว คอลัมน์ที่มีการจัดทำดัชนีจะเป็นคอลัมน์ที่ไม่ใช่คีย์หลัก ซึ่งใช้ในคำสั่ง JOIN, WHERE และ ORDER BY
ตารางฐานข้อมูลหนึ่งๆ สามารถมีดัชนีแบบไม่คลัสเตอร์ได้มากกว่าหนึ่งรายการ
กลุ่ม
การสร้างคลัสเตอร์จะปรับเปลี่ยนบล็อกข้อมูลให้อยู่ในลำดับที่แน่นอนเพื่อให้ตรงกับดัชนี ส่งผลให้ข้อมูลแถวถูกจัดเก็บตามลำดับ ดังนั้นจึงสามารถสร้างดัชนีคลัสเตอร์ได้เพียงหนึ่งเดียวต่อตารางฐานข้อมูลหนึ่งๆ ดัชนีคลัสเตอร์สามารถเพิ่มความเร็วในการเรียกค้นข้อมูลโดยรวมได้อย่างมาก แต่โดยปกติแล้วจะได้ผลดีเฉพาะในกรณีที่เข้าถึงข้อมูลตามลำดับเดียวกันหรือลำดับย้อนกลับของดัชนีคลัสเตอร์ หรือเมื่อมีการเลือกช่วงของรายการ
เนื่องจากระเบียนทางกายภาพถูกจัดเรียงตามลำดับนี้บนดิสก์ รายการแถวถัดไปในลำดับจึงอยู่ก่อนหรือหลังรายการสุดท้ายทันที ดังนั้นจึงต้องการการอ่านบล็อกข้อมูลน้อยลง คุณสมบัติหลักของดัชนีแบบคลัสเตอร์จึงอยู่ที่การจัดเรียงแถวข้อมูลทางกายภาพให้สอดคล้องกับบล็อกดัชนีที่ชี้ไปยังแถวเหล่านั้น ฐานข้อมูลบางแห่งแยกบล็อกข้อมูลและบล็อกดัชนีไว้ในไฟล์ที่แยกจากกัน ในขณะที่บางแห่งใส่บล็อกข้อมูลที่แตกต่างกันโดยสิ้นเชิงสองบล็อกไว้ในไฟล์ทางกายภาพเดียวกัน
กลุ่ม
เมื่อมีการรวมฐานข้อมูลและตารางหลายตารางเข้าด้วยกัน จะเรียกว่าคลัสเตอร์ (ไม่ควรสับสนกับดัชนีคลัสเตอร์ที่อธิบายไว้ก่อนหน้านี้) เรคอร์ดสำหรับตารางที่ใช้ค่าคีย์คลัสเตอร์ร่วมกันจะต้องจัดเก็บไว้ด้วยกันในบล็อกข้อมูลเดียวกันหรือใกล้เคียงกัน ซึ่งอาจช่วยปรับปรุงการรวมตารางเหล่านี้โดยใช้คีย์คลัสเตอร์ เนื่องจากเรคอร์ดที่ตรงกันจะถูกจัดเก็บไว้ด้วยกันและต้องการ I/O น้อยลงในการค้นหา[ 3 ]การกำหนดค่าคลัสเตอร์จะกำหนดเค้าโครงข้อมูลในตารางที่เป็นส่วนหนึ่งของคลัสเตอร์ คลัสเตอร์สามารถใช้คีย์ด้วย ดัชนี B-treeหรือตารางแฮชได้ บล็อกข้อมูลที่จัดเก็บเรคอร์ดของตารางจะถูกกำหนดโดยค่าของคีย์คลัสเตอร์
ลำดับคอลัมน์
ลำดับการกำหนดคอลัมน์ในดัชนีมีความสำคัญ เป็นไปได้ที่จะดึงข้อมูลตัวระบุแถวโดยใช้เพียงคอลัมน์แรกที่ถูกสร้างดัชนี อย่างไรก็ตาม เป็นไปไม่ได้หรือไม่มีประสิทธิภาพ (ในฐานข้อมูลส่วนใหญ่) ที่จะดึงข้อมูลตัวระบุแถวโดยใช้เพียงคอลัมน์ที่สองหรือมากกว่าที่ถูกสร้างดัชนี
ตัวอย่างเช่น ในสมุดโทรศัพท์ที่จัดเรียงตามเมืองก่อน จากนั้นตามนามสกุล และสุดท้ายตามชื่อ ในเมืองใดเมืองหนึ่ง เราสามารถดึงรายชื่อหมายเลขโทรศัพท์ทั้งหมดออกมาได้อย่างง่ายดาย อย่างไรก็ตาม การค้นหาหมายเลขโทรศัพท์ทั้งหมดสำหรับนามสกุลใดนามสกุลหนึ่งโดยเฉพาะนั้นยุ่งยากมาก เราจะต้องค้นหาในแต่ละส่วนของเมืองนั้นๆ เพื่อหาข้อมูลที่มีนามสกุลนั้นๆ ฐานข้อมูลบางแห่งสามารถทำเช่นนี้ได้ แต่บางแห่งก็ไม่ใช้ดัชนี
ในตัวอย่างสมุดโทรศัพท์ที่มีดัชนีแบบผสมที่สร้างขึ้นบนคอลัมน์ ( city, last_name, first_name) หากเราค้นหาโดยระบุค่าที่แน่นอนสำหรับทั้งสามฟิลด์ เวลาในการค้นหาจะน้อยที่สุด แต่ถ้าเราระบุค่าสำหรับcityและ first_nameเท่านั้น การค้นหาจะใช้เฉพาะcityฟิลด์ เพื่อดึงข้อมูลที่ตรงกันทั้งหมด จากนั้นการค้นหาตามลำดับจะตรวจสอบการจับคู่กับfirst_nameดังนั้น เพื่อปรับปรุงประสิทธิภาพ ต้องแน่ใจว่าได้สร้างดัชนีตามลำดับของคอลัมน์การค้นหา
การใช้งานและข้อจำกัด
ดัชนีมีประโยชน์สำหรับการใช้งานหลายอย่าง แต่ก็มีข้อจำกัดอยู่บ้าง ลองพิจารณา คำสั่ง SQL ต่อไปนี้ : หากไม่ใช้ดัชนี ซอฟต์แวร์ฐานข้อมูลจะต้องตรวจสอบคอลัมน์ last_name ในทุกแถวของตาราง (ซึ่งเรียกว่าการสแกนตารางทั้งหมด ) แต่หากมีดัชนี ฐานข้อมูลจะติดตามโครงสร้างข้อมูลของดัชนี (โดยทั่วไปคือB-tree ) จนกว่าจะพบรายการ Smith ซึ่งใช้ทรัพยากรการคำนวณน้อยกว่าการสแกนตารางทั้งหมดมาก SELECTfirst_nameFROMpeopleWHERElast_name='Smith';
ลองพิจารณาคำสั่ง SQL นี้: คำสั่งนี้จะให้ที่อยู่อีเมลของลูกค้าทุกคนที่มีที่อยู่อีเมลลงท้ายด้วย "@wikipedia.org" แต่ถึงแม้ว่าคอลัมน์ email_address จะถูกสร้างดัชนีแล้ว ฐานข้อมูลก็ยังต้องทำการสแกนดัชนีทั้งหมดอยู่ดี เนื่องจากดัชนีถูกสร้างขึ้นโดยมีสมมติฐานว่าคำจะเรียงจากซ้ายไปขวา เมื่อมีสัญลักษณ์ ตัวแทน (wildcard)อยู่ที่จุดเริ่มต้นของคำค้นหา ซอฟต์แวร์ฐานข้อมูลจะไม่สามารถใช้โครงสร้างข้อมูลดัชนีพื้นฐานได้ (กล่าวคือ เงื่อนไข WHERE ไม่สามารถใช้งานได้ ) ปัญหานี้สามารถแก้ไขได้โดยการเพิ่มดัชนีอีกตัวที่สร้างขึ้นบนคอลัมน์และคำสั่ง SQL ดังนี้: วิธีนี้จะวางสัญลักษณ์ตัวแทนไว้ที่ส่วนขวาสุดของคำสั่ง (ตอนนี้ _index_address_id)SELECTemail_addressFROMcustomersWHEREemail_addressLIKE'%@wikipedia.org';reverse(email_address)SELECTemail_addressFROMcustomersWHEREreverse(email_address)LIKEreverse('%@wikipedia.org');gro.aidepikiw@%ซึ่งดัชนีบน reverse(email_address) สามารถตอบสนองได้
เมื่อใช้ตัวอักษรตัวแทน (wildcard) ทั้งสองด้านของคำค้นหา เช่น%wikipedia.org%ระบบ จะไม่ใช้ดัชนีที่มีอยู่ในช่องนี้ แต่จะทำการค้นหาแบบเรียงลำดับแทน ซึ่งใช้เวลานาน
เพื่อลดผลกระทบนี้ สามารถใช้วิธีการจัดทำดัชนีข้อความเต็มรูปแบบได้ ตัวอย่างเช่น สามารถแบ่งข้อความออกเป็นไตรแกรม (กลุ่มตัวอักษร 3 ตัว) และจัดเก็บไว้ใน GIN (Generalized inverted index ) เพื่อลดความซับซ้อนของการค้นหาเหลือเพียงประมาณ100 ครั้ง
ประเภทของดัชนี
ดัชนีบิตแมป
ดัชนีบิตแมปเป็นรูปแบบการสร้างดัชนีแบบพิเศษที่จัดเก็บข้อมูลส่วนใหญ่ในรูปแบบอาร์เรย์บิต (บิตแมป) และตอบคำถามส่วนใหญ่โดยการดำเนินการทางตรรกะแบบบิตกับบิตแมปเหล่านี้ ดัชนีที่ใช้กันทั่วไป เช่นB+ treeจะมีประสิทธิภาพสูงสุดหากค่าที่ใช้สร้างดัชนีไม่ซ้ำกันหรือซ้ำกันเพียงเล็กน้อย ในทางตรงกันข้าม ดัชนีบิตแมปได้รับการออกแบบมาสำหรับกรณีที่ค่าของตัวแปรซ้ำกันบ่อยมาก ตัวอย่างเช่น ฟิลด์เพศในฐานข้อมูลลูกค้ามักจะมีค่าที่แตกต่างกันอย่างมากที่สุดสามค่า ได้แก่ ชาย หญิง หรือไม่ทราบ (ไม่ได้บันทึก) สำหรับตัวแปรดังกล่าว ดัชนีบิตแมปจะมีประสิทธิภาพเหนือกว่า tree ที่ใช้กันทั่วไปอย่างมาก
ดัชนีหนาแน่น
ดัชนีหนาแน่นในฐานข้อมูลคือไฟล์ที่มีคู่ของคีย์และตัวชี้สำหรับทุกระเบียนในไฟล์ข้อมูล คีย์ทุกตัวในไฟล์นี้จะเชื่อมโยงกับตัวชี้เฉพาะไปยังระเบียนในไฟล์ข้อมูลที่เรียงลำดับแล้ว ในดัชนีคลัสเตอร์ที่มีคีย์ซ้ำกัน ดัชนีหนาแน่นจะชี้ไปยังระเบียนแรกที่มีคีย์นั้น[ 4 ]
ดัชนีเบาบาง
ดัชนีแบบสปาร์สในฐานข้อมูลคือไฟล์ที่มีคู่ของคีย์และตัวชี้สำหรับแต่ละบล็อกในไฟล์ข้อมูล คีย์แต่ละตัวในไฟล์นี้จะเชื่อมโยงกับตัวชี้เฉพาะไปยังบล็อกในไฟล์ข้อมูลที่เรียงลำดับแล้ว ในดัชนีแบบคลัสเตอร์ที่มีคีย์ซ้ำกัน ดัชนีแบบสปาร์สจะชี้ไปยังคีย์ค้นหาที่ต่ำที่สุดในแต่ละบล็อก
ดัชนีย้อนกลับ
ดัชนีแบบคีย์ย้อนกลับจะกลับค่าคีย์ก่อนที่จะป้อนเข้าไปในดัชนี ตัวอย่างเช่น ค่า 24538 จะกลายเป็น 83542 ในดัชนี การกลับค่าคีย์มีประโยชน์อย่างยิ่งสำหรับการจัดทำดัชนีข้อมูล เช่น หมายเลขลำดับ ซึ่งค่าคีย์ใหม่จะเพิ่มขึ้นอย่างต่อเนื่อง
ดัชนีผกผัน
ดัชนีแบบกลับด้านจะจับคู่คำในเนื้อหากับเอกสารที่คำนั้นอยู่ ทำให้สามารถค้นหาข้อความแบบเต็มได้
ดัชนีหลัก
ดัชนีหลักประกอบด้วยฟิลด์หลักของตารางและตัวชี้ไปยังฟิลด์ที่ไม่ใช่ฟิลด์หลักของตาราง ดัชนีหลักจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อสร้างตารางในฐานข้อมูล
ดัชนีรอง
ใช้สำหรับสร้างดัชนีให้กับฟิลด์ที่ไม่ใช่ฟิลด์เรียงลำดับหรือฟิลด์คีย์ (ไม่มีการรับประกันว่าไฟล์จะถูกจัดเรียงตามฟิลด์คีย์หรือฟิลด์คีย์หลัก) ดัชนีหนึ่งรายการต่อทูเปิลทุกตัวในไฟล์ข้อมูล (ดัชนีแบบหนาแน่น) จะประกอบด้วยค่าของแอตทริบิวต์ที่ถูกสร้างดัชนีและตัวชี้ไปยังบล็อกหรือเรคอร์ด
ดัชนีแฮช
การแฮชเชิงเส้น
ดัชนีอีกประเภทหนึ่งที่ใช้ในระบบฐานข้อมูลคือการแฮชเชิงเส้น (linear hashing )
การใช้งานดัชนี
ดัชนีสามารถนำไปใช้โดยใช้โครงสร้างข้อมูลที่หลากหลาย ดัชนีที่นิยมใช้ ได้แก่ต้นไม้สมดุลต้นไม้B+และแฮช[ 5 ]
ในMicrosoft SQL Serverโหนดใบของดัชนีคลัสเตอร์จะสอดคล้องกับข้อมูลจริง ไม่ใช่เพียงแค่ตัวชี้ไปยังข้อมูลที่อยู่ ณ ที่อื่น ดังเช่นในกรณีของดัชนีที่ไม่ใช่คลัสเตอร์[ 6 ]แต่ละความสัมพันธ์สามารถมีดัชนีคลัสเตอร์ได้หนึ่งรายการและดัชนีที่ไม่ใช่คลัสเตอร์ได้หลายรายการ[ 7 ]
การควบคุมการทำงานพร้อมกันของดัชนี
โดยทั่วไป ดัชนีจะถูกเข้าถึงพร้อมกันโดยธุรกรรมและกระบวนการหลายอย่าง ดังนั้นจึงจำเป็นต้องมีการควบคุมการเข้าถึงพร้อมกันในทางทฤษฎีแล้ว ดัชนีสามารถใช้วิธีการควบคุมการเข้าถึงพร้อมกันของฐานข้อมูลทั่วไปได้ แต่ก็มีวิธีการควบคุมการเข้าถึงพร้อมกันเฉพาะสำหรับดัชนีอยู่ ซึ่งจะนำมาใช้ร่วมกับวิธีการทั่วไปเพื่อให้ได้ประสิทธิภาพที่ดีขึ้นอย่างมาก
ดัชนีหน้าปก
ในกรณีส่วนใหญ่ ดัชนีจะใช้เพื่อค้นหาระเบียนข้อมูลที่ต้องการอ่านได้อย่างรวดเร็ว กล่าวอีกนัยหนึ่ง ดัชนีใช้เพื่อค้นหาระเบียนข้อมูลในตารางเท่านั้น ไม่ได้ใช้เพื่อแสดงผลลัพธ์ของข้อมูล
ดัชนีครอบคลุม (Covering Index) เป็นกรณีพิเศษที่ดัชนีนั้นมีฟิลด์ข้อมูลที่จำเป็นอยู่แล้วและสามารถตอบคำถามที่ต้องการได้
พิจารณาตารางต่อไปนี้ (ช่องข้อมูลอื่นๆ ถูกละเว้น):
| รหัสประจำตัว | ชื่อ | สาขาอื่นๆ |
|---|---|---|
| 12 | ปลั๊ก | ... |
| 13 | โคมไฟ | ... |
| 14 | ฟิวส์ | ... |
ในการค้นหาชื่อสำหรับ ID 13 นั้น การสร้างดัชนีบน (ID) จะมีประโยชน์ แต่ยังคงต้องอ่านข้อมูลในเรคอร์ดเพื่อหาชื่ออยู่ดี อย่างไรก็ตาม การสร้างดัชนีบน (ID, Name) จะมีฟิลด์ข้อมูลที่ต้องการอยู่แล้ว และช่วยลดความจำเป็นในการค้นหาเรคอร์ด
ดัชนีครอบคลุมแต่ละรายการมีไว้สำหรับตารางเฉพาะ การสืบค้นที่ JOIN/เข้าถึงข้ามหลายตาราง อาจพิจารณาดัชนีครอบคลุมบนตารางมากกว่าหนึ่งตาราง[ 8 ]
ดัชนีครอบคลุม (covering index) สามารถเพิ่มความเร็วในการดึงข้อมูลได้อย่างมาก แต่ตัวดัชนีเองอาจมีขนาดใหญ่เนื่องจากมีคีย์เพิ่มเติม ซึ่งจะทำให้การแทรกและการอัปเดตข้อมูลช้าลง เพื่อลดขนาดของดัชนีดังกล่าว ระบบบางระบบจึงอนุญาตให้รวมฟิลด์ที่ไม่ใช่คีย์ไว้ในดัชนีได้ ฟิลด์ที่ไม่ใช่คีย์นั้นไม่ได้เป็นส่วนหนึ่งของการเรียงลำดับดัชนี แต่จะรวมอยู่เฉพาะในระดับใบเท่านั้น ทำให้ดัชนีครอบคลุมมีขนาดโดยรวมเล็ลง
สามารถทำได้ใน SQL ด้วย. [ 9 ] [ 10 ]CREATEINDEXmy_indexONmy_table(id)INCLUDE(name);
การกำหนดมาตรฐาน
ไม่มีมาตรฐานใดกำหนดวิธีการสร้างดัชนี เนื่องจากมาตรฐาน ISO SQL ไม่ได้ครอบคลุมด้านกายภาพดัชนีเป็นส่วนประกอบทางกายภาพอย่างหนึ่งของการออกแบบฐานข้อมูล เช่นเดียวกับพื้นที่จัดเก็บข้อมูล (tablespace หรือ filegroups)ผู้จำหน่าย RDBMS แต่ละรายจะมีไวยากรณ์พร้อมตัวเลือกเฉพาะบางอย่างที่ขึ้นอยู่กับความสามารถของซอฟต์แวร์นั้นๆ CREATEINDEX
ดูเพิ่มเติม
- การล็อกดัชนี
- ดัชนีแบบกลับด้าน – ประเภทของดัชนีฐานข้อมูล
- การจัดทำดัชนีโดยเครื่องมือค้นหา – วิธีการจัดการข้อมูล
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ดัชนีฐานข้อมูล
ดัชนี ฐานข้อมูล เป็น โครงสร้างข้อมูล ที่ช่วยเพิ่มความเร็วในการดำเนินการเรียกค้นข้อมูลใน ตารางฐานข้อมูล...
รองรับการค้นหาอย่างรวดเร็ว
ซอฟต์แวร์ ฐานข้อมูล ส่วนใหญ่มีเทคโนโลยีการสร้างดัชนีที่ช่วยให้ การค้นหาใช้ เวลาน้อยกว่าเชิงเส้น เพื่อปรับปรุงประสิทธิภาพ เนื่องจาก การค้นหาเชิงเส้น ไม่มีประสิทธิภาพสำหรับฐานข้อมูลขนาดใหญ่
การควบคุมข้อจำกัดของฐานข้อมูล
ดัชนีใช้สำหรับตรวจสอบ ข้อจำกัดของฐานข้อมูล เช่น UNIQUE, EXCLUSION, PRIMARY KEY และ FOREIGN KEY ดัชนีอาจถูกประกาศเป็น UNIQUE ซึ่งจะสร้างข้อจำกัดโดยปริยายบนตารางที่เกี่ยวข้อง ระบบฐานข้อมูลมักจะสร้างดัชนีโดยปริยายบนชุดคอลัมน์ที่ประกาศเป็น PRIMARY KEY...
ไม่มีการจัดกลุ่ม
ข้อมูลอาจเรียงลำดับแบบสุ่ม แต่ ลำดับเชิงตรรกะ ถูกกำหนดโดยดัชนี แถวข้อมูลอาจกระจายอยู่ทั่วตารางโดยไม่คำนึงถึงค่าของคอลัมน์หรือนิพจน์ที่ใช้สร้างดัชนี โครงสร้างดัชนีแบบไม่คลัสเตอร์ประกอบด้วยคีย์ดัชนีที่เรียงลำดับแล้ว โดยระดับใบของดัชนีจะมีตัวชี้ไปยังระเบียน...