Entity Framework で生成された SQL クエリに奇妙な問題があります。私は低めのシナリオを持っています:
(すべての時間は SQL プロファイラーからのものであるため、EF コードは含まれていません)
- サーバーを再起動します
- 時間を確認するために SQL Proviler を起動します
- EF 経由でアプリからクエリを実行します - 12 秒かかります
- SQL プロバイダーから SQL クエリ アナライザーにクエリをコピーします - 340 ミリ秒かかります
- EF 経由でアプリからクエリを再度実行します - 12 秒かかります
- SQL クエリ アナライザーからクエリを再度実行します - 320 ミリ秒かかります (この手順を何度も繰り返しても同じ結果が得られます)
また、サーバーの再起動直後に SQL クエリ アナライザーからクエリを実行すると、最初は約 1 秒しかかからず、上記と同じシナリオよりも時間がかかります。
編集:解決策を見つけましたが、これがクエリを高速化している理由がわかりません。それはまだ未解決の問題です...???
LINQ クエリで .AsNoTracking メソッドを使用しました。このステートメントを削除すると、クエリは 320 ミリ秒で実行されます。これは、EFがNoTrackingで使用するロックレベルに関するものでしょうか???
ヒント/アイデアは本当に素晴らしいでしょう。マーカス