2011-10-12 13 views
9

Bir bütçe sistemi için bir SQL sunucu veritabanı karşı iş nesneleri web istihbarat tarafından oluşturulan gülünç büyük bir sorgu var. Bir rapor geliştiricisi, bu sorguyu GUI'de oluşturdu ve hiçbir zaman tamamlanmadığını buldu. Dün gece çalışmasına izin verdim ve sunucularımız Windows güncellemeleri için yeniden başlatılmadan önce 7 saat koştu.'No Join Predicate' kaynağını bulmak nasıl

SQL'de açık plan planına baktım ve birkaç 'Nested Loops (Inner Join) adımında birkaç uyarı buldum - bu uyarıların ikisi son adımdan 3'e kadar. Uyarı 'Katılmaya Katıl' değil.

Bu konuda var diğer not sorgu nerede fıkrada bu içeriyor olmasıdır: - bu yüzden bir türlü ikinci kodudur ekleyerek

BF_FUND.CD IN ('0105','0101') 

sadece orada bir fon kodu koyarsanız, iyi çalışır Bir şeyleri bize kartezyen haline getirmek (belki, bu, katılma yüklemesi olmadan ne olur).

Bunu nasıl izleyeceğinizle ilgili herhangi bir öneriniz var mı? 790 satır harika SQL'in içinden geçmek, hiçbir şeyle birlikte katılmaktan sonra katılmak.

Açık plan, belirli bir alana işaret edebilir mi?

Yardımlarınız için teşekkürler.


Düzenlemeler:

sorgu, güvenlik şey gönderebilir ve karartmak için büyük çok var olamaz. Ve kimseye bakmayı istemem.

+1

1 - ** Mesaj sorgu ** – JNK

+5

2 -. Eğer (xy = zy' üzerindeki x JOIN SOL ') açık' JOIN' sözdizimini kullanın emin olun, değil örtülü synax ('DAN x, z') – JNK

+1

Yürütme planı size ilgili tabloları anlatır, bu yüzden nasıl öğrenilmesi zor olur? 'JOIN' sözdizimi ile yazılmış mı? –

cevap

4

SQL eklemelerinizde netlik elde etmek için çevrimiçi SQL biçimlendiricisini kullanın; Sorunu hata ayıklamak için sorgu bloğunu blokla bölün.

http://www.dpriver.com/pp/sqlformat.htm

Sonra mssql sunucuda planının grafiksel görünümünü kullanabilirsiniz; Bu her şeyi açıklayacak.

P.S: İç içe geçmiş döngüler nedeniyle yetersiz performans gösteren bir sorgunuz varsa, katılma yüklemeleri/katılımları olmadan katılma, sorgunuzdaki katılma ölçütlerini kaçırma olasılığınız olmadığından fazla değildir. Kontrol http://sqlserverselect.blogspot.com/2010/10/nested-loops-join-no-join-predicate.html

+1

Bu ikinci bağlantı için teşekkürler - bu neler oluyor olabilir. – Sam