2

IQueryableを構成し、その上で実行ToPagedList()し、結果を MVC ビューに渡すEntity-to-SQL コードがあります。

ToPagedList()SQL クエリの実行がタイムアウトして失敗します。生成された SQL クエリを ( を使用してIQueryable.ToString()) 抽出し、サーバーで実行しました。1 秒もかからずに実行され、出力は空です (これは正しいです)。

したがってToPagedList()、30分実行してタイムアウトする空の結果を生成するクエリを実行し、同じサーバーで1秒未満で実行される基礎となるSQLを持っています。

SQL クエリの出力が空であるため、EF でのフィルタリング、検索、またはその他の遅延のせいにすることはできません。

空の出力を生成する高速な SQL クエリが、内部から非常に遅く実行される原因は何ToPagedList()ですか?

UPD

この問題は自然に解決したようで、コードを実行しているマシンと SQL Server マシンの間の一時的な問題だったようです。

4

1 に答える 1

0

SQL ServerでTRACEを実行し、エンティティが生成しているクエリを確認してから、その実行プランを確認してください。

ほとんどの場合、最新バージョンのEntityは堅牢なクエリを作成するのに非常に優れていますが、ヒットしているテーブルに適切に配置されたINDEXによって処理が大幅に高速化されるわけではありません。

楽しみ!

于 2013-02-19T16:29:21.510 に答える