14

複雑なストアド プロシージャの速度低下を診断しようとしています (いくつかの巨大なクエリがあります)。

ASP.NET から SP を呼び出すと、5 秒かかります。

SQL Management Studio から (EXEC を使用して) 呼び出すと、0.05 秒かかります。

この動作は、さまざまな方法や状況で一貫してテストされています。

これは C#.NET を使用しています。データベースは MS SQL Server 2012 です。

問題は Web アプリにありますが、テスト ハーネスとして小さなコンソール アプリを作成しましたが、動作は同じです。

1) 次のように、C#.NET コンソール アプリで経過時間を計算します。

stopwatch.Start();
rdr = cmd.ExecuteReader();
stopwatch.Stop();

2) クエリの前後に GETDATE() を呼び出して SQL プロシージャ内の経過時間を計算し、それらの時間を小さなテーブルに格納します。SQL Mgmt Studio でそのテーブルをクエリして、SP 内のクエリにかかった時間を確認できます。

このようにして、全体と比較して SQL に費やされた時間を確認でき、その 99% が SQL に費やされています。

しかし、SQL Mgmt Studio で遅くなければ、デバッグして改善するのは困難です。

だから私の質問は、なぜ違いがあるのですか?SQL Mgmt Studio がコンソール アプリケーションとは異なる方法でロックしている可能性はありますか?

4

2 に答える 2