なぜこのようなことが起こるのかについての理論を探しているだけなので、これはそれほど技術的な質問ではありません。
私たちのアプリケーションには、ほとんど同じテーブルを読み取るいくつかの異なるストアド プロシージャがあります。私たちは SQL Server を監視し、リストで最もコストのかかるクエリ (最高の I/O、CPU 時間など) を打ち負かそうとしていました。SQL を変更したり、アプリケーションを変更したりすることで、多くのメリットが得られました。
とにかく、ストアド プロシージャ #1 を変更してリリースしました。予想通り、はるかに優れたパフォーマンスを発揮しました。ただし、ストアド プロシージャ #2 (同様のデータを読み取る) では、パフォーマンス メトリックが突然低下しました (より多くの I/O を消費しています)。
リリース後、私たちはまだより良い場所にいますが、なぜこれが起こっているのかを理解しようとしています. これまでのところ、問題を再現できませんでした (ストアド プロシージャをどのように使用しても、問題なく動作しています)。
また、ストアド プロシージャは、本番環境で毎回パフォーマンスが低下するわけではありません。実行されるほとんどの場合、問題なく実行されます。
何か案は?
SQL Server 2008 を使用しています。インデックスは変更していません。