ローカル変数の使用 WHERE フィルターで FULL TABLE SCAN が発生します。 SS はコンパイル時にローカル変数の値を認識していないためです。そのため、列で使用できる最大スケールの実行計画が作成されます。
パフォーマンスの問題を防ぐために、SS はコンパイル時に変数の値を認識している必要があります。 SP を定義し、これらのローカル変数をパラメータとして渡す 問題解決の一つです。もう 1 つの解決策は、sp_executesql を使用することです。 それらのローカル変数をパラメーターとして再度渡します...
または、OPTION ( RECOMPILE ) を追加することもできます あなたのSQL文の最後に、ローカル変数をコンパイルさせます。これでパフォーマーの問題は解決します。