2011-10-12 120 views
9

予算システム用のSQLサーバーデータベースに対して、ビジネスオブジェクトのWebインテリジェンスによって大量のクエリを生成しました。レポート開発者がGUIでこのクエリを作成し、完了しないことが判明しました。私はそれが昨晩実行させ、私たちのサーバーがWindowsの更新のために再起動する前に7時間走った。「結合述語なし」のソースを見つける方法

SQLのExplainプランを見て、いくつかのネストループ(内部結合)ステップでいくつかの警告が表示されました。これらの警告のうちの2つが最後から3番目のステップです。警告は「結合述語なし」です。

私はこれで持っている他のノートは、クエリがwhere句でこれを含有することである: - ので、何とか二コードが追加

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

あなたはそこだけで1つのファンドのコードを入れた場合、それが正常に動作します私たちのことをデカルトにしています(おそらく、これは結合述語がないと起こります)。

これを追跡する方法についての推奨事項はありますか? 790行目のすばらしいSQLがウェイ・スルーされます。

説明計画が特定の地域を指すことはありますか?

ご協力いただきありがとうございます。


編集:

は、クエリ、セキュリティの事を投稿することはできませんし、それが難読化する大規模に多くのです。そして私はそれを誰にも見させたくありません。

+1

1 - **ポストクエリ** – JNK

+5

2 - 。あなたは(XY = zy'上のxを左結合 ')明示的な' JOIN'構文を使用していることを確認し、ない暗黙のSYNAX( 'からのX、 z ') – JNK

+1

実行計画は関係するテーブルを示しているので、どのように見つけにくいのですか?暗黙の 'JOIN'構文で書かれていますか? –

答えて

4

オンラインSQLフォーマッタを使用して、SQL結合を明確にします。次に、クエリブロックをブロックごとに分割して問題をデバッグします。

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

その後、あなたはMSSQLサーバーに計画のグラフィカルなビューを使用することができます。それはすべてを説明するでしょう。

P.S:結合述部を持たないネストされたループ結合のためにパフォーマンスの低いクエリがある場合、クエリで結合条件が不足しているとは限りません。 チェックhttp://sqlserverselect.blogspot.com/2010/10/nested-loops-join-no-join-predicate.html

+1

何が起こっているのかもしれない。 – Sam

関連する問題