Leftouter katılıma sahip dizin, her zaman sql server 2005'te Index taramasıdır

Birkaç tabloya katıldığım sorgu var, son tablo SOL ile birleştirildi KATILMAK. Son masa milyondan fazla satır var ve yürütme planı üzerinde tablo taraması gösteriyor. Sahibim dizinlenmiş sütunlar Birleşmenin yapıldığı yer. Her zaman indeks taraması kullanılır ancak SOL JOIN ile INNER JOIN değiştirilirse, indeks arama kullanılır. kullanılmış ve yürütme birkaç saniye sürüyor ama SOL JOIN ile bir masa taraması var, yani icra birkaç dakika sürer. Dış birleşimler kullanıldığında dizinler kapanır mı? Özledim ben bir şey? Bu tür davranışların sebebi nedir? İşte Sorgu

Select * 
FROM

     Subjects                  s
    INNER join       Question  q ON q.SubjectID   = s.SubjectID
    INNER JOIN       Answer    c ON a.QestionID   = q.QuestionID
    Left outer JOIN  Cell      c ON c.Question ID = q.QuestionID

Where S.SubjectID =15

There is cluster index on SubjectID in "Subject" table. and there is non-cluster index on questionID in other tables.

Çözüm: Başka bir şekilde deniyorum ve şimdi hücre tablosunda indeks arıyoruz. Değiştirilen sorgu İşte:

Select * 
FROM

     Subjects                  s
    INNER join       Question  q ON q.SubjectID   = s.SubjectID
    INNER JOIN       Answer    c ON a.QestionID   = q.QuestionID
    Left outer JOIN  Cell      c ON c.Question ID = q.QuestionID
                                              AND C.QuestionID > 0
                                              AND C.CellKey > 0

Where S.SubjectID =15

Bu şekilde Hücre masasında yüksek seçicilik yaptım. :)

0
@ user999896 - masa tanımlarınızı da gösterin.
katma yazar JNK, kaynak
... ve idam planı?
katma yazar JNK, kaynak
Tablo tanımlarını da istedim. QuestionID bir int mi? Tüm tablolarda aynı mı?
katma yazar JNK, kaynak
Bize sorguyu, tablo ve dizin tanımlarını gösterir misiniz? Hangi sql server sürümünü kullanıyorsunuz?
katma yazar automatic, kaynak
Merhaba otomatik, soruyu düzenle, lütfen bir göz atın.
katma yazar user999896, kaynak
Konular: SubjectID üzerinde Küme indeksi ..... QuestionKey ve Soru Kümesinde NonCluster dizinindeki Soru Kümesi indeksi için .... "Cevap" tablosu için, AnswerKey üzerinde Küme dizini ve Soru Kümesinde olmayan Küme endeksi .... için "Hücre "TableKuster index, CellKey ve QuestionID'de Küme dışı dizin
katma yazar user999896, kaynak
Merhaba JNK, Index indeksini kullanarak filtrelenmiş değerler veren SubjectID kullanıyorum nerede yan tümcesinde görebildiğiniz gibi, Tablonun bulunduğu yer hariç diğer tüm tablo ve Denekler tablosunda dizin arayışını alıyorum, sadece Cell table ile ilgili bir sorunum var. Çünkü hücre tablosunda INdex taraması var
katma yazar user999896, kaynak
Evet, tüm dizin sütunları türü int'dir ve tüm tabloda aynıdır.
katma yazar user999896, kaynak

1 cevap

Ben sadece aynı sorunu simüle etmeye çalıştım, ancak tablo taraması yerine, Kümelenmiş dizin dizinini kullanıyordu, aynı zamanda indeksi zorlamak için deneyebilirsiniz, sözdizimini kontrol edebilirsiniz buradaki ve sorunlarınız olabilir. bir endeksi zorlarken yüzünü burada . Bu yardımcı olur umarım.

0
katma