我在一个项目中,我无法控制数据库结构。我已经从数据库创建了我的模型,并且下面的所有表上都有外键。除了用户表之外,每个表中大约有 500k 到 1000k 行,而且它们相当宽。
使用 EF5 执行此查询需要两秒钟以上:
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?