2011-09-09 17 views
5

Bir tablonun yabancı anahtarına bir indeks eklemenin neden iş arkadaşımın görüşünü yavaşlattığını bulmakta zorlanıyorum. Bu görünüm, dış birleştirme ve iç birleştirmeyle birkaç paketlenmiş görünümden oluşur. Sorunun nerede olduğunu bulmak için onları tek tek çıkarmaya çalıştım, ama söyleyemem, belli bir görüşten değil, hepsinden daha fazlası geliyor.Bir endeks seçim ifadesini nasıl yavaşlatabilir?

Dizinlerin ekleme işlemini yavaşlatabileceğini veya sabit diskte boyut aldıklarını biliyordum, ancak hiçbir zaman görüntüyü yavaşlatmaktan sorumlu olabileceğini hiçbir zaman okumadım. Gerçek şu ki:

Dizin ve 9 olmadan 20 saniye sürer.

CREATE NONCLUSTERED INDEX [IX_MyField] ON [dbo].MyTable 
(
    [MyField] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, 
    IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, 
    ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY] 
+1

Neler olduğunu görmek için sorgu planına baktınız mı? –

+0

Teoride, dizin, optimizasyon yapan kişinin planı oluştururken daha fazla seçenek göz önünde bulundurmasını sağlar; bu, bir tablo taraması gerektiğine karar verirse, yavaşlatabilir. Bununla birlikte, bunun ölçülebilir bir etkiye sahip olacağından kuşku duyuyorum. Etkilenen sorguyu gönderir misiniz? – JohnFx

+0

Görüşün görüşlerini çağıran (ya da yanlış yorumladığım) bir görünüm olduğunu mu söylediniz? Öyleyse bunu hemen durdurmalısın. Bu görüşler, tüm alt görünümleri tam olarak hayata geçirmeli ve büyük miktarda veri olduğunda çok yavaştır. Görüntülü görüşme görüşlerini görmek için bir SQL antipattern. – HLGEM

cevap

9

DİĞER dizinleriniz veya istatistikleriniz güncel değil. Mevcut değilse, sorgu analizcisinin, daha hızlı olacağını düşündüğünden, yeni endeksinizi kullanarak bir alt optimal yürütme planı seçmesi olasıdır.

deneyin koşu: Masanızda

UPDATE STATISTICS WITH (FULLSCAN)

.

+1

Bu kayalar ahbap! Haftası kurtardın! – Arthis

+1

Yardım etmekten mutluluk duydum ve işe yaradı. Bunun gibi konular bir çok kez çalışmak için acıdır. – JNK

2

MyTable'dan başka sütun seçiyor musunuz? Öyleyse, muhtemelen bir Yer İşareti Araması (veya RID Araması) yapıyorsunuz, bu da ek veriler için tablonuza geri döneceğiniz anlamına gelir.

Ek olarak seçmiş olduğunuz sütunları, dizinin INCLUDE maddesinde belirtmelisiniz.

Her iki sorgunuzu yürütme planları etkin olarak çalıştırın ve 2'yi karşılaştırın, sorgunun hangi bölümlerinin daha uzun sürdüğünü belirleyin.

+0

Açıkladığınız için teşekkürler, sorunumu çözmedi ama İndekslerin nasıl çalıştığını biraz daha anladım. İyi günler! – Arthis

İlgili konular