非常に単純なEFクエリを実行して、ユーザーが有効かどうかを判断するログインページがあります。最初の実行では、このクエリーは実行に約6秒かかります。その後の実行では、1秒よりもはるかに短い時間がかかります。エンティティフレームワークのクエリを高速化するために、それらを初期化するにはどうすればよいですか?
私はApplication Auto-Startを使用して話した記事を見てきました。私の質問はこれです。実際にクエリを呼び出さずにキャッシュを実行するためにこのクエリをトリガーする方法はありますか?ダミーの引数セットでクエリを呼び出すだけですか?
EDIT:私が6秒と言うとき、私はクエリを取得するのにかかる時間を指しています。
return from contact in _context.Contacts
where contact.District == Environment.District &&
contact.ContactId == (contactID ?? contact.ContactId)
select contact;
これは、のSQLServer 2008年であり、私はそれが返すSQLと持続時間を確認するためのプロファイラを実行しました:コードは、この(ノートこの場合にはcontactIDがNULL可能でint型とnullに設定されている)のようになります最終的に実行されるクエリは41msです。クエリがSQLに到達する前に、6〜7秒の遅延が発生します。私はそれが私に同時に起こっているかもしれない他の事柄の詳細を私に与えることができるかどうかを見るために今覗いてみようとしています。
私は、プロファイリングをいくつか行い、遅延が実際にどこで発生しているのかを調べることは価値があるかもしれないと思います。 –
EFのオーバーヘッドはかなり軽く、おそらく問題ではありません。おそらくGlimpse(NuGetパッケージ)のようなものをインストールして、本当に何が原因であるかを見てください。あなたは本当に間違っている(ブートストラップされたアドイン?)他のイベントが発生している可能性があります。 –
@RobertHarvey SQLプロファイリングまたは.NETプロファイリングを意味しますか? – Mykroft