คำถามติดแท็ก index-tuning

กระบวนการพิจารณาดัชนีที่มีประโยชน์และไม่ได้

1
ประสิทธิภาพการสืบค้นต่ำ
เรามีกระบวนการขนาดใหญ่ (10,000+ บรรทัด) ซึ่งโดยทั่วไปแล้วจะทำงานใน 0.5-6.0 วินาทีขึ้นอยู่กับปริมาณข้อมูลที่ต้องใช้งาน ในช่วงเดือนที่ผ่านมาหรือประมาณ 30 กว่าวินาทีหลังจากเราอัปเดตสถิติด้วย FULLSCAN เมื่อมันช้าลง sp_recompile "แก้ไข" ปัญหาจนกว่างานสถิติรายค่ำคืนจะทำงานอีกครั้ง ด้วยการเปรียบเทียบแผนการดำเนินการที่ช้าและเร็วฉันได้ จำกัด ให้แคบลงเป็นตาราง / ดัชนีเฉพาะ เมื่อมันทำงานช้ามันกำลังประมาณ ~ 300 แถวจะถูกส่งคืนจากดัชนีเฉพาะเมื่อมันทำงานเร็วมันจะประมาณ 1 แถว เมื่อรันช้ามันจะใช้ Table Spool หลังจากทำการค้นหาบนดัชนีเมื่อมันรันเร็วมันจะไม่ทำ Spool Table ใช้ DBSS SHOW_STATISTICS ฉันทำกราฟฮิสโตแกรมดัชนีใน excel ปกติแล้วฉันจะคาดหวังว่ากราฟจะเป็น "ภูเขากลิ้ง" มากกว่า แต่ดูเหมือนว่าภูเขาซึ่งเป็นจุดที่สูงที่สุดคือ 2x-3x สูงกว่าค่าอื่น ๆ ส่วนใหญ่บนกราฟ หากฉันอัปเดตสถิติโดยไม่มี FULLSCAN มันจะดูเป็นปกติมากกว่า ถ้าฉันเรียกใช้ด้วย FULLSCAN อีกครั้งดูเหมือนว่าฉันอธิบายไว้ข้างต้น …

4
การพิจารณาประสิทธิภาพระหว่างการใช้ PK แบบกว้างเทียบกับคีย์สังเคราะห์แบบแยกต่างหากกับ UQ คืออะไร
ฉันมีตารางหลายตารางที่สามารถระบุระเบียนได้โดยไม่ซ้ำกับสาขาธุรกิจที่หลากหลาย ก่อนหน้านี้ฉันใช้ฟิลด์เหล่านี้เป็น PK โดยคำนึงถึงประโยชน์เหล่านี้: เรียบง่าย; ไม่มีฟิลด์ที่ไม่เกี่ยวข้องและมีเพียงหนึ่งดัชนี การทำคลัสเตอร์ช่วยให้สามารถผสานการรวมอย่างรวดเร็วและตัวกรองตามช่วง อย่างไรก็ตามฉันได้ยินกรณีที่ทำเพื่อสร้างIDENTITY INTPK สังเคราะห์และบังคับใช้รหัสธุรกิจด้วยUNIQUEข้อ จำกัดแยกต่างหาก ข้อดีคือการที่ PK แคบทำให้ดัชนีรองมีขนาดเล็กกว่ามาก ถ้าตารางมีไม่มีดัชนีอื่น ๆ กว่า PK ผมไม่เห็นเหตุผลที่จะสนับสนุนแนวทางที่สองใด ๆ แม้ว่าจะอยู่ในตารางขนาดใหญ่ก็อาจดีที่สุดที่จะสรุปว่าดัชนีอาจมีความจำเป็นในอนาคตและดังนั้นจึงชอบ PK สังเคราะห์แคบ . ฉันขาดการพิจารณาใด ๆ หรือไม่? อนึ่งฉันไม่ได้โต้เถียงกับการใช้คีย์สังเคราะห์ในคลังข้อมูลฉันแค่สนใจว่าจะใช้ PK แบบกว้าง ๆ เพียงครั้งเดียวและเมื่อใดที่จะใช้ PK แบบแคบและอังกฤษแบบกว้าง

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

1
มีเหตุผลใดที่จะใช้ดัชนีสำหรับตารางที่เล็กมาก (มากถึง 1,000 แถว)?
ในระหว่างการพัฒนาแอพพลิเคชั่นฉันมีตารางจำนวนมากที่เก็บข้อมูล "เล็ก" จำนวนมาก (โดยปกติแล้วจะมีค่า 10-40 ค่าid+ valueและบางครั้งtype) ซึ่งเก็บแอตทริบิวต์สำหรับ "วัตถุ" เช่นสด / เน่าแดง / เขียว / น้ำเงินสำหรับผลิตภัณฑ์ ฉันไม่ได้ใส่คุณสมบัตินี้ไว้ในตารางผลิตภัณฑ์เนื่องจากส่วนประกอบอิเล็กทรอนิกส์ไม่สามารถสดใหม่และก๊าซออกซิเจนไม่สามารถเป็นสีแดงและตารางไม่สามารถนับแถวได้ไม่ จำกัด ... สำหรับการจัดเก็บคุณสมบัติฉันใช้ตารางขนาดเล็กที่กำหนดเองที่ฟิลด์ 2-3: idสำหรับการเชื่อมโยงnameเพื่อแสดงในแอปพลิเคชันและบางครั้งtypeถ้ากลุ่มคุณลักษณะในประเภทเดียวกัน "ออบเจ็กต์" หลักเชื่อมโยงกับแอตทริบิวต์ผ่านตารางหลายต่อหลายกลาง มีเหตุผลในการสร้างและรักษาดัชนีสำหรับ "พจนานุกรมขนาดเล็ก" เหล่านั้นที่มีน้อยกว่า 1,000 รายการ (ปกติคือ 10-40) หรือไม่ ฐานข้อมูลเป้าหมายของฉันคือ Oracle แต่ฉันหวังว่าจะตอบผู้ขายอิสระ ... ฉันเติม - ไม่ แต่ไม่มีทักษะทางเทคนิคในการปรับความเหมาะสมของฉัน ...

2
ALTER INDEX และ DBCC DBREINDEX แตกต่างกันอย่างไร
เป็นเพียงข้อแตกต่างระหว่าง ALTER INDEX [index_name] on [object_name] REBUILD with (ONLINE=OFF, FILLFACTOR=90) และ DBCC DBREINDEX([dbname], 90) เพียงว่าคำสั่ง DBCC จะทำดัชนีดัชนีทั้งหมดใหม่บนตารางทั้งหมดในฐานข้อมูลหรือไม่

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