データベース構造を制御できないプロジェクトに参加しています。データベースからモデルを作成しましたが、以下のすべてのテーブルに外部キーがあります。ユーザー テーブルとは別に、各テーブルには約 500k から 1000k の行があり、かなり幅があります。
EF5 でこのクエリを実行すると、2 秒以上かかります。
var customerEngage = ctx.Customer_TB
.Include(c => c.Insurance_TB)
.Include(c => c.Insurance_TB.Select(i => i.H80Row_TB))
.Include(c => c.Insurance_TB.Select(i => i.WinsureRow_TB))
.Include(c => c.Insurance_TB.Select(i => i.User_TB))
.Include(c => c.Insurance_TB.Select(i => i.User_TB.Department_TB))
.SingleOrDefault(c => c.IDCustomer == myID);
関連テーブルに必ずしも行が存在するわけではありません。
パフォーマンスの問題なしに、次の SQL クエリを実行できます。
SELECT *
from dim.Customer_TB c
INNER JOIN fact.insurance_tb i on i.IDCustomer = c.IDCustomer
LEFT JOIN fact.H80Row_TB h80 on h80.IDInsurance = i.IDInsurance
LEFT JOIN fact.WinsureRow_TB winsure on winsure.IDInsurance = i.IDInsurance
LEFT JOIN eb.User_TB a on i.LockedByUserID = a.IDUser
LEFT JOIN eb.Department_TB dept on dept.IDDepartment = a.IDDepartment
WHERE c.IDCustomer = myID
まず、EF クエリに何か問題がありますか? SP を作成することはできますが、その結果セットから POCOS を埋めるにはどうすればよいでしょうか?