จะรู้ได้อย่างไรว่าเมื่อไหร่ที่ฉันมีดัชนีมากเกินไป


26

ใช้ Microsoft SQL Server Profiler ทุกครั้งจากนั้นแนะนำฉันด้วยดัชนีและสถิติใหม่ ๆ ที่จะสร้าง ("... 97% การปรับปรุงโดยประมาณ ... ")

จากความเข้าใจของฉันทุกดัชนีเพิ่มสามารถทำให้SELECTแบบสอบถามSQL ได้เร็วขึ้น แต่ยังUPDATEหรือINSERTแบบสอบถามช้าลงเนื่องจากดัชนีจะต้องมีการปรับ

สิ่งที่ฉันสงสัยคือเมื่อฉันมีดัชนี / สถิติ "มากเกินไป"

อาจจะไม่มีคำตอบที่ชัดเจนเกี่ยวกับเรื่องนี้ แต่บางกฎของหัวแม่มือ


1
ที่เกี่ยวข้อง: dba.stackexchange.com/questions/56/…
Nick Chammas

ขอบคุณ @Nick ฉันค้นหา Google และ dba.se.com อย่างรอบคอบก่อนโพสต์คำถาม ในความคิดของฉันนี้ค่อนข้างไม่เกี่ยวข้อง ฉันไม่ต้องการที่จะรู้ว่าจำเป็นต้องมีดัชนีหรือไม่ แต่เป็นวิธีการพิจารณาว่าเมื่อใดที่ดัชนีUPDATEและINSERTงบจำนวนมากเกินไปช้าเกินไป
Uwe Keim

3
คุณอ่านคำตอบที่นั่นหรือไม่? ตัวอย่างคำตอบที่ได้รับการยอมรับตัวอย่างเช่นลิงก์ไปยังสคริปต์วิเคราะห์บางตัวที่สามารถช่วยคุณระบุดัชนีที่ไม่ได้ใช้ซึ่งควรลบออก คุณอาจพบว่ามีประโยชน์ในการตอบคำถามของคุณเมื่อคุณมีดัชนี "มากเกินไป"
Nick Chammas

คำตอบ:


24

โปรไฟล์การโหลดของคุณเป็นปัจจัยที่สำคัญที่สุดในการตอบคำถามนี้

  • ถ้าโหลดของคุณอ่านมากคุณต้องการให้ดัชนีตอบสนองการสืบค้นที่หนักที่สุดหรือบ่อยที่สุด

  • หากภาระของคุณเป็นแบบเขียนมากให้ทำดัชนีอย่างระมัดระวัง ดัชนีเพื่อตอบสนองความต้องการในการค้นหา UPDATE เช่นเดียวกับ SELECT ที่แพงที่สุดหนึ่งหรือสองรายการของคุณ

  • หากโหลดของคุณเป็น OLAP ให้ทำดัชนีอย่างไม่ จำกัด เนื่องจากคุณจะสแกนตารางเป้าหมายต่อไป

คุณจะรู้ได้อย่างไรว่าคุณมีดัชนีมากเกินไป

  • เมื่อใดที่คุณเห็นว่าข้อความค้นหาบางรายการไม่ได้ถูกใช้

  • ลบ, UPDATE หรือ INSERT แสดงแผนบ่อยแบบสอบถามที่เกี่ยวข้องกับการเปลี่ยนแปลงดัชนีราคาแพงหลาย (เช่น nonclustered ดัชนีแทรก , ปรับปรุงหรือลบ ) ใช้วิจารณญาณของคุณเพื่อพิจารณาว่าบทลงโทษสำหรับคำสั่ง DML เหล่านั้นมีค่าเท่ากับผลประโยชน์ที่คุณได้รับจากดัชนีที่ต้องได้รับการอัพเดตหรือไม่


8

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


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