Ne zaman / çok fazla endeksim olup olmadığını nasıl anlarım?


26

Her seferinde ve daha sonra Microsoft SQL Server Profiler'ı çalıştırmam, oluşturmam için bana bir sürü yeni dizin ve istatistik önerdi ("...% 97 tahmini gelişme ...").

Anladığım kadarıyla, eklenen her bir dizin bir SQL SELECTsorgusunu daha hızlı hale getirebilir, ancak bir UPDATEveya INSERTsorguyu dizinlerin ayarlanması gerektiğinden daha yavaş yapabilir.

Merak ettiğim şey, ne zaman "çok fazla" dizinim / istatistiklerim var?

Belki bu konuda net bir cevap yoktur, ancak bazı kurallar vardır.



Teşekkürler, @Nick. Sorumu göndermeden önce Google ve dba.se.com’u dikkatlice aradım. Benim düşünceme göre, bu oldukça ilgisizdir. Bir dizinin gerekli olup olmadığını bilmek istemiyorum, bunun yerine ne kadar çok dizin oluşturduğunu UPDATEve INSERTifadeleri ne kadar yavaş bıraktığını belirlemek istiyorum .
Uwe Keim

3
Cevapları orada okudun mu? Kabul edilen cevap, örneğin, kaldırılması gereken kullanılmayan dizinleri tanımlamanıza yardımcı olabilecek bazı analiz komut dosyalarına bağlanır. Bunu "çok fazla" dizininiz olduğunda sorunuzu yanıtlarken yararlı bulabilirsiniz.
Nick Chammas,

Yanıtlar:


24

Yük profilini, bu soruyu cevaplamak için en önemli faktördür.

  • Yükünüz yoğun okumadaysa, dizinlerin en ağır veya en sık yapılan sorguları karşılamasını istersiniz.

  • Yükünüz yazma yoğun ise, dikkatlice indeksleyin. Bir UPDATE ihtiyacını karşılamak için endeksleyin, örneğin bir veya iki en pahalı SELECT'iniz gibi.

  • Yükünüz bir OLAP yüküyse, hedef tabloları yine de tarayacağınız için endeksleyin.

Çok fazla endeksin olduğunu nereden biliyorsun?

  • Bunlardan bazılarının herhangi bir sorgu tarafından kullanılmadığını görebilirsiniz .

  • Sık sık bir SİLME, GÜNCELLEME veya INSERT, birkaç pahalı indeks değişikliği içeren (yani kümelenmemiş bir indeks ekleme , güncelleme veya silme ) bir sorgu planı gösterir . DML ifadelerindeki cezaların güncellenmesi gereken endekslerden elde ettiğiniz kazanmaya değip değmeyeceğini belirlemek için kararınızı kullanın.


8

Korunmakta olan ancak hiçbir zaman kullanılmayan (veya nadiren kullanılıyorsa) dizinleriniz varsa, birçok dizine sahip olmalısınız. Tüm endeksleriniz kullanıcı performansını arttırmak için kullanılıyorsa, o zaman çok fazla olmak zorunda değilsiniz.


Ben "iki tekrarlarını değiştirmek önerebilir için için" " çok ben düzenlemek onları benim düzenlemek 6 karakter minimum değiştirmek gerekir gibi çünkü"?
Uwe Keim
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.