単純なASP.NETMVCWebアプリケーションと(ローカルの)SQLServerがあるとします。ORMとして、私はEntityFramework4.3.1を使用しています
ORM側でかかる時間を把握するために、単純な選択クエリを用意し、次のようなタイムスタンプを出力しました。
...
using (var context = Entities())
{
(1) timestamp1
var list = context.Database.SqlQuery<Entity>("select * from entities").ToList();
(2) timestamp2
}
...
同時に、SQL Server Profilerを監視して、クエリの開始時刻と終了時刻を確認しました。
結果は次のようになります(クエリ処理時間は1秒未満であるため、ミリ秒のみが表示されることに注意してください)
- タイムスタンプ1:149ミリ秒
- クエリ開始時間:197ミリ秒
- クエリ終了時間:198ミリ秒
- タイムスタンプ2:199ミリ秒
質問)クエリを開始する前に、なぜこれほど多くの時間(48ミリ秒、197-149ミリ秒)がかかったのですか?これを減らす方法はありますか?
ありがとう!