3
SQL Serverクエリがメモリで実行されているかディスクに移動しているかを判断する方法はありますか?
今日、アプリケーションで一連のストアドプロシージャに出くわしました。これらは、長時間実行されるプロセス内で繰り返し呼び出されます。各プロシージャ内で、複数の異なるselectステートメントを見つけました。一部はループ内です。当然のことながら、現在使用されているこれらのルーチンの実行には数分かかりますが、直観では数秒で完了すると予想されます。 これらの手順が書かれたとき、パフォーマンスが考慮されなかったことはかなり明白であるように見えます。「良いアイデアではない」もののインスタンスが複数あります。 データのインポート時の各行の処理には1行あたり300ミリ秒かかるため、比較的小さなインポートの処理には数分かかります。 ただし、手順に含まれるテーブルの大部分は非常に小さいものです。これらのテーブルのすべてがメモリに完全に常駐している場合、おそらくこのいずれかを書き換えても得られるものはそれほど多くないと考えています。 私は決定しようとしている....この明らかに非効率的なコードのために、それはどれほどの本当の影響を与えているのか?修正する価値はありますか? 質問は次のとおり です。-完全にメモリに固定されているテーブルを特定する方法はありますか? -ネストされたストアドプロシージャを監視して特に高価な部分を見つけるために、トレースをオンにする方法はありますか? 注:これはSQL Server 2008 R2にあります