したがって、プロジェクトには非常に基本的なデータ モデル (.NET 4.0 をターゲットとし、NuGet によってインストールされた EF 5 を使用し、最初にデータベース) があり、Item と ItemGroup の 2 つのテーブルがあります。
Item-table には、文字列と数値の両方のさまざまなフィールドと、ItemGroup を指す外部キーがあります。
一方、ItemGroup には Id、Name、および Code (最後の 2 つは文字列) しかありません。
現在、およそ 50,000 個のアイテムと 100 個のアイテム グループしかありません。context.Items.ToList()
SQL プロファイラーを使用してを実行すると、所要時間は約 2 ~ 3 秒で、これは完全に許容範囲です。ただし、を使用して同時に ItemGroups をロードしたい場合、context.Items.Include("ItemGroup").ToList()
実行時間は約 12 秒まで跳ね上がります。また、すべてのアイテムをフェッチした後ですべての ItemGroup を単純にフェッチすると、実行時間も非常に長くなります。これにより、時間がかかるのはアイテムをそれぞれのグループにマッピングすることだと思います。
ただし、SQL プロファイラーが非常に単純な INNER JOIN クエリも 10 秒以上かかるとレポートする理由は、これでもまだ説明できません。
私はここで途方に暮れており、これまでこの種の問題に直面したことはなかったので、アドバイスは大歓迎です。