Kullanılmayan NONCLUSTERED INDEX hala sorgu hızını artırabilir mi?


13

Bu garip bir durum, ama birinin cevap vermesini umuyorum.

Bazı performans sorunlarını giderme sırasında, istendiği gibi tabloya NONCLUSTERED INDEX ekledik sp_BlitzIndex. Ertesi gün kullanımını kontrol ettik ve 0 okuma gösterdi ( 0 tarama / arama, 0 tekil arama ), bu yüzden devre dışı bıraktık.

Önümüzdeki dakika, INDEX'i eklediğimizde ilk etapta kontrol etmeye ve çözmeye çalıştığımız aynı uygulama yavaşlığından (performans sorunu) bir şikayet alıyoruz.

Şimdi, teoride biliyorum ki, bu tamamen rastlantısal geliyor. INDEX kanıtlanmış, ölçülebilir bir şekilde KULLANILMAMIŞTIR . Devre dışı bırakılması, sorgu performansında düşüşe neden OLMAMALIDIR . Ama neredeyse ÇOK tesadüf.

Soru

Yani sorum, yeterince basit:

Öyle mi mümkünse kimin kullanım-istatistik bir KÜMELENMEMİŞ ENDEKSİ (DMV'leri gelen / o, sp_BlitzIndex) YOK kullanımını gösterir, hala edilmiştir yardımcı etkilenen masaya nasılsa sorgu performansını?


Not: Lütfen atasözü "Git test et!" tepki; Tablo yoğun olarak kullanıldığından ve endeks gece bakım penceresine kadar yeniden etkinleştirilmeyeceğinden (yeniden oluşturulamayacağından) test etmek için yarına kadar beklemek zorundayım. Ve performans sorunlarının doğası düzensiz ve yine de çoğaltılması zordu; "Hayır, test etmeyeceğim" demiyorum, bunu test edip planlamamız gerektiğini biliyorum, ama teori ve / veya deneyimsel bilgi istiyorum.
NateJ

1
Bu blog gönderisini faydalı bulabilirsiniz; brentozar.com/archive/2016/11/…
Rich Benner

Yanıtlar:


13

Evet, SQL Server bu dizindeki istatistiklerin daha doğru / yararlı olduğuna karar verdiğinde ve bu istatistikleri tahminleri yapmak ve bir plan oluşturmak için kullandığında yapabilir.

SQL Server'ın bir dizinden istatistikleri kullanmaya ve başka bir dizini taramaya / aramaya karar verdiği durumlarda karşılaştım.

Düzenle - Bu geçerli olmayabilir, çünkü dizini devre dışı bıraktığınızı fark ettim. Bu senaryoyu test etmedim.


Açık ve özlü yanıt için teşekkür ederiz! Evet, hemen devre dışı bırakılmadı, kullanıcı şikayeti / performans yavaşlamasından birkaç saniye önce devre dışı bırakana kadar tamamen & "canlı" olarak etkinleştirildi. İyisin :)
NateJ

1
@NateJ Bu teori CREATE STATISTICSyerine tarafından test edilebilir CREATE INDEX.
Jakub Kania
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.