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 - ** Mesaj sorgu ** – JNK
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
Yürütme planı size ilgili tabloları anlatır, bu yüzden nasıl öğrenilmesi zor olur? 'JOIN' sözdizimi ile yazılmış mı? –