この動作が見られる理由については、いくつかの説明が考えられます。いくつかの一般的なものは
<オール>#temp
に具体化する テーブルは、式からいくつかの可能なオプションを削除することにより、計画のその部分に対してより最適な結合順序を強制する場合があります.#temp
に具体化する テーブルは、不十分なカーディナリティの見積もりを修正することで、残りの計画を改善する可能性があります。
最も信頼できる方法は、単純に #temp
を使用することです
ポイント 1 に関して失敗した場合は、CTE または派生テーブルの中間実体化を強制するためのヒントを提供します
. TOP(large_number) ... ORDER BY
の使用 多くの場合、繰り返し再評価するのではなく、結果をスプールするように促すことができます。
それが機能したとしても、スプールに統計はありません。
ポイント 2 と 3 については、目的の計画が得られなかった理由を分析する必要があります。 sargable述語を使用するようにクエリを書き直すか、統計を更新すると、より良い計画が得られる可能性があります。クエリ ヒントを使用して目的のプランを取得できなかった場合。