参考までに-SQL2005を使用していて、パラメータを使用してストアドプロシージャを使用している場合は、他のことに注意する必要があります。
SQL Serverは、使用される最初のパラメーターを使用して、ストアドプロシージャの実行プランをコンパイルします。したがって、これを実行すると:
usp_QueryMyDataByState 'Rhode Island'
実行プランは、小さな州のデータで最適に機能します。しかし、誰かが振り返って走った場合:
usp_QueryMyDataByState 'Texas'
ロードアイランドサイズのデータ用に設計された実行プランは、テキサスサイズのデータでは効率が悪い場合があります。これにより、サーバーを再起動したときに驚くべき結果が生じる可能性があります。これは、新しく生成された実行プランが、最初に使用されるパラメーターを対象としているためです。必ずしも最良のパラメーターであるとは限りません。統計が再構築される場合など、計画を実行する大きな理由があるまで、計画は再コンパイルされません。
ここでクエリプランが登場します。SQLServer2008は、どのパラメータが最初に呼び出されても、DBAが特定のクエリプランを長期的に固定するのに役立つ多くの新機能を提供します。
私の懸念は、ストアドプロシージャを再構築するときに、実行プランを強制的に再コンパイルすることです。お気に入りのパラメータを使用して呼び出したところ、もちろん高速でしたが、問題はストアドプロシージャではなかった可能性があります。ストアドプロシージャが、ある時点で異常なパラメータセットを使用して再コンパイルされたため、クエリプランが非効率的だった可能性があります。何も修正していない可能性があり、次にサーバーを再起動したとき、またはクエリプランが再コンパイルされたときに同じ問題が発生する可能性があります。