我有一个查询,我想根据详细信息是否满足特定条件返回主行。
例如,如果至少有一个 Detail 行具有 SomeProperty = X,我只想返回特定的 Master 行。
基于以下谓词:
predicate = predicate.And(p =>
p.BasketItems.Where(obi => obi.BasketItemTypeID ==
(int) BasketType.Refund).Count() > 0);
生成以下 SQL:
SELECT COUNT(*)
FROM [dbo].[BasketItems] AS [t3]
WHERE ([t3].[BasketId] = [t0].[OrderBasketID]) AND ([t3].[BasketItemTypeID] = 3)
)) > 0)
问题在于它正在执行表扫描,因此查询需要一段时间才能运行。
只是检查我没有做任何疯狂的事情,想知道是否有什么可以加快这个查询的速度?
谢谢邓肯