ความแตกต่างระหว่างการค้นหาดัชนีแบบคลัสเตอร์และการค้นหาแบบไม่จัดกลุ่มดัชนี


10

อะไรคือความแตกต่างระหว่างการค้นหาดัชนีแบบกลุ่ม (CI) และการค้นหาแบบไม่จัดกลุ่มดัชนี (NCI) มีประสิทธิภาพดีกว่าอีกหรือไม่

เหตุผลที่ฉันถามสิ่งนี้เพราะฉันมีตารางที่มี 50 ล้านแถวและ 150 คอลัมน์ มันมีชื่อคอลัมน์ที่IDกำหนดไว้เป็นดัชนีคลัสเตอร์ มี NCI อีกหนึ่งตัวที่มีรหัสคีย์ดัชนีและincludeคอลัมน์เจ็ดคอลัมน์ที่เหมือนกัน สำหรับฉันแล้วดูเหมือนว่าดัชนี NC ซ้ำกันที่นี่และสามารถทิ้งได้อย่างปลอดภัย

ดังนั้นฉันต้องการความคิดเห็น / คำแนะนำจากผู้เชี่ยวชาญหากสามารถทิ้งไว้อย่างปลอดภัยหรือควรรักษาไว้เหมือนเดิม?


คุณจะบอกว่าทุกคอลัมน์ที่จะรวมอยู่ในดัชนีไม่มีคลัสเตอร์?
Ian Ringrose

ไม่ตารางมี 150 คอลัมน์ในนั้นพร้อมกับคอลัมน์ ID ที่กำหนดเป็น CI และมีดัชนี NCI พร้อมคอลัมน์ ID อีกครั้งเป็นคีย์ดัชนีและอีก 7 คอลัมน์รวมอยู่ด้วย
SQLPRODDBA

ดูเหมือนว่า Paul White จะได้รับคำตอบที่ถูกต้อง แต่ฉันถามว่าคุณควรเปลี่ยนตาราง "base" จากตารางคลัสเตอร์เป็นฮีปหรือไม่ หรือแม้กระทั่งแยกตารางขึ้นอยู่กับความถี่ที่แตกต่างกันของการปรับปรุงเพื่อลดค่าใช้จ่ายในการเข้าสู่ระบบการทำธุรกรรม
Ian Ringrose

คำตอบ:


26

ดัชนีที่ไม่คลัสเตอร์ที่มีคีย์ * เดียวกันกับดัชนีคลัสเตอร์อาจยังคงมีประโยชน์เพราะดัชนีที่ไม่ได้คลัสเตอร์จะมีขนาดเล็กลงและหนาแน่นขึ้น โปรดจำไว้ว่าดัชนีคลัสเตอร์รวมข้อมูลในแถวทั้งหมดดังนั้นจึงเป็นดัชนีที่กว้างที่สุด (หนาแน่นน้อยที่สุด) ที่เป็นไปได้

* คอลัมน์คีย์ที่เหมือนกันเรียงตามวิธีเดียวกัน (เรียงขึ้น / ลง)

สำหรับการค้นหาแบบซิงเกิล (การค้นหาโดยใช้สมการความเท่าเทียมกันในดัชนีที่ไม่ซ้ำกัน) ความแตกต่างที่สำคัญคือสันนิษฐานว่ามีโอกาสมากขึ้นในหน้าดัชนีที่จำเป็นในการค้นหาระเบียนเดียวที่มีอยู่แล้วในหน่วยความจำ ทุกสิ่งเท่ากันดัชนีที่ไม่ได้เป็นคลัสเตอร์ที่มี 100 หน้ามีโอกาสที่ดีกว่าดัชนีแบบคลัสเตอร์ที่เก็บไว้ใน 10,000 หน้า

สำหรับการค้นหาชนิดอื่น ๆ ยกเว้นซิงเกิลจะมีองค์ประกอบการสแกนเช่นกัน ส่วนการสแกนจะได้รับประโยชน์จากความหนาแน่นที่มากขึ้นของดัชนีที่ไม่เป็นคลัสเตอร์ (แถวต่อหน้ามากขึ้น) แม้ว่าหน้าจะต้องมาจากที่เก็บข้อมูลถาวรการอ่านหน้าเว็บน้อยลงก็จะเร็วขึ้น

คุณควรตรวจสอบเอกสารของระบบถามผู้ที่เพิ่มดัชนีและ / หรือค้นหาความคิดเห็นของรหัสเพื่อทำความเข้าใจว่าทำไมดัชนีนี้จึงมีอยู่ คุณต้องตรวจสอบคำจำกัดความของดัชนีทั้งหมดอย่างรอบคอบรวมถึงการบีบอัดและดูสคริปต์การบำรุงรักษาดัชนี อาจมีเหตุผลพิเศษอื่น ๆ สำหรับการมีดัชนีที่ไม่เป็นคลัสเตอร์ (เช่นความสามารถในการสร้างออนไลน์ใหม่)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.