ฉันเพิ่งค้นพบสคริปต์ฟรียอดเยี่ยมจากผู้คนที่ BrentOzar Unltd
http://www.brentozar.com/blitzindex/
นี่เป็นการวิเคราะห์ที่ดีว่ามีดัชนีใดบ้างใช้บ่อยแค่ไหนและมีการใช้เครื่องมือเคียวรีเพื่อค้นหาดัชนีที่ไม่มีอยู่บ่อยแค่ไหน
มันเป็นแนวทางที่ดี บางครั้งมันก็มีแนวคิดที่เป็นนัยมากกว่า ฉันทำสิ่งต่อไปนี้โดยทั่วไปแล้ว:
- ลบดัชนีที่ไม่เคยอ่าน (หรืออาจน้อยกว่า 50 ครั้งต่อเดือน)
- เพิ่มดัชนีที่ชัดเจนที่สุดในคีย์และฟิลด์ต่างประเทศที่ฉันรู้ว่าเราใช้บ่อย
ฉันไม่ได้เพิ่มดัชนีที่แนะนำทั้งหมดและกลับไปอีกหนึ่งสัปดาห์ต่อมาเพื่อพบว่าพวกเขาไม่ได้รับการแนะนำอีกต่อไปเนื่องจากเครื่องมือค้นหาใช้ดัชนีใหม่อื่น ๆ แทน!
โดยทั่วไปคุณควรหลีกเลี่ยงการจัดทำดัชนีใน:
- ตารางเล็กมาก (น้อยกว่า 50 ถึง 200 รายการ): บ่อยครั้งที่เครื่องมือค้นหาจะเร็วกว่าหากสแกนตารางแทนที่จะโหลดดัชนีอ่านประมวลผลและอื่น ๆ
- หลีกเลี่ยงการจัดทำดัชนีในคอลัมน์ที่มี Cardinality ต่ำ ( http://en.wikipedia.org/wiki/Cardinality_(SQL_statements) ) ในคอลัมน์แรกที่กล่าวถึง เช่นการจัดทำดัชนีฟิลด์เพศ (M / F) นั้นมีการใช้งานเพียงเล็กน้อยเท่านั้นมันเป็นเรื่องง่ายที่จะสแกนตารางและหาค่า ~ 50% ที่ตรงกัน หากมีการระบุไว้หลังจากสิ่งที่เจาะจงมากขึ้นในดัชนี (เช่น [วันเกิด, เพศ]) นั้นดีกว่า - คุณอาจต้องการเพศชายทุกคนที่เกิดในช่วงเวลาที่กำหนด
ดัชนีแบบกลุ่มดี - โดยปกติจะขึ้นอยู่กับคีย์หลักของคุณ พวกเขาช่วยให้เอ็นจิ้นฐานข้อมูลวางข้อมูลบนดิสก์ในลำดับที่ดี จำเป็นอย่างยิ่งที่จะต้องเข้าใจสิ่งนี้สำหรับตารางที่ใหญ่ที่สุดเนื่องจากดัชนีแบบคลัสเตอร์ที่ดีมักจะลดพื้นที่ที่ตารางใช้อยู่
ฉันได้ลดตารางบางส่วนจาก 900MB เป็น 400MB เพียงเพราะพวกเขาไม่ได้สร้างกองไว้ล่วงหน้า
http://msdn.microsoft.com/en-us/library/aa933131(v=sql.80).aspx
จัดระเบียบ / Rebuild
คุณควรตรวจสอบดัชนีแยกส่วน การกระจัดกระจายเล็กน้อยไม่เป็นไรอย่าได้ครอบงำ! http://technet.microsoft.com/en-us/library/ms189858.aspxรู้ถึงความแตกต่างระหว่างการจัดระเบียบใหม่และสร้างใหม่!
ทบทวนเป็นประจำ
การเปลี่ยนแปลงการค้นหาการเปลี่ยนแปลงปริมาณข้อมูลคุณสมบัติใหม่จะถูกเพิ่มการลบแบบเก่า คุณควรจะดูพวกเขาเดือนละครั้ง (หรือบ่อยกว่านั้นถ้าคุณมีปริมาณมาก) และมองหาที่ที่คุณสามารถช่วยฐานข้อมูลออก!
เท่าไหร่
ในวิดีโอล่าสุดเบรนต์แนะนำ (โดยทั่วไป) ไม่เกิน 5 ดัชนีบนโต๊ะที่มีการเขียนจำนวนมาก (เช่นตารางคำสั่ง) และไม่เกิน 10 ถ้ามันอ่านมากกว่าที่เขียน (เช่นตารางการบันทึกสำหรับการวิเคราะห์) http: / /www.youtube.com/watch?v=gOsflkQkHjg
Adj] ทั้งหมด, รวมทั้งหมด, รวมทั้งสิ้น
มันขึ้นอยู่กับ!
ระยะทางของคุณแตกต่างกันไปตามฐานข้อมูล ครอบคลุมชัดเจน (นามสกุลพนักงานวันที่สั่งซื้อ ฯลฯ ) ในตารางขนาดใหญ่ของคุณ (ตอนนี้ / อนาคต) ตรวจสอบทบทวนและปรับตามความจำเป็น ควรเป็นส่วนหนึ่งของรายการตรวจสอบประจำของคุณเมื่อจัดการฐานข้อมูลของคุณ :)
หวังว่านี่จะช่วยได้!