アプリケーションのデータ プルの 1 つで、パフォーマンスの悪夢に見舞われました。状況は、大量の顧客リストを持っている地域ベースのクエリ用であり、顧客が表示したときにその地域の顧客のみが表示されるはずです。現在の表 (説明を簡単にするために省略):
Customer (Table):
CustomerID
FirstName
LastName
....
RegionCustomer (Table):
RegionCustomerID
RegionID
CustomerID
これは、次のステートメントを使用して .net エンティティ フレームワークを介して取得されます (edmx は、1 人の顧客が多数の RegionCustomer を持つことができる 1 対多の関係を設定します)。
EntitiesManager.Customers.Where(function(x) x.RegionCustomers.Any(function(y) y.RegionID = CurrentUserRegionID)).ToList()
これは、どちらかのテーブルで 1000 未満のレコードを処理している場合は正常に実行されますが、その後はパフォーマンスの悪夢です。SQL サーバーが CPU を回転させて衝撃的なことを行い、時間がかかります。上記のステートメントが作成する SQL は、実行する必要があることに対してかなり厄介です (SQL プロファイラーで追跡)。
これを高速化する方法について誰かがアイデアを持っているかどうか疑問に思っていますか?
前もって感謝します