SQL Server 2008.この非常に大きなクエリがあり、そのクエリには高いコストがかかります。ヒキガエルはそれでクエリチューニング機能を持っており、作られた唯一の変化は以下の通りであった:クエリの最適化。なぜTOADはこれをしたのですか?
前:
LEFT OUTER JOIN (SELECT RIN_EXT.rejected,
RIN_EXT.scar,
RIN.fcreceiver,
RIN.fcitemno
FROM RCINSP_EXT RIN_EXT
INNER JOIN dbo.rcinsp RIN
ON RIN_EXT.fkey_id = RIN.identity_column) RIN1
ON RCI.freceiver = RIN1.fcreceiver
AND RCI.fitemno = RIN1.fcitemno
WHERE RED.[YEAR] = '2009'
後:
LEFT OUTER JOIN (SELECT RIN_EXT.rejected,
RIN_EXT.scar,
RIN.fcreceiver,
RIN.fcitemno
FROM dbo.rcinsp RIN
INNER JOIN RCINSP_EXT RIN_EXT
ON RIN.identity_column = COALESCE (RIN_EXT.fkey_id , RIN_EXT.fkey_id)) RIN1
ON RCI.freceiver = RIN1.fcreceiver
AND RCI.fitemno >= RIN1.fcitemno -- ***** RIGHT HERE
AND RCI.fitemno <= RIN1.fcitemno
WHERE RED.[YEAR] = '2009'
フィールドのchar(3)フィールドであり、これはありますSQL Server 2008.
なぜ私のものよりもずっと速いのですか?
気づいた場合は、FROM RINとINNER JOIN RIN_EXTから行いましたが、FRIN RIN_EXTとINNER JOIN RINから行っていました。あなたがコメントした1行を削除してメトリックスを実行したかどうか、そしてその特定の行がパフォーマンスを向上させているかどうかは分かりません。 – JustLoren
ベストオプションは、2つのクエリのクエリプランを比較し、使用している演算子を確認することです。 –
申し訳ありませんが、最初のスクリプトで残りの結合条件が欠落していました。 – DavidStein