エンティティクエリへの次のlinqがあります
from p in Products
where p.ProductId==1219
select new
{
Name = p.ProductName,
count = (from dc in DiscountCodes
where dc.ProductId == p.ProductId
select dc).Count()
}
生成されるSQLは(linqpadを使用)
-- Region Parameters
DECLARE @p0 Int = 1219
-- EndRegion
SELECT [t0].[ProductName] AS [Name], (
SELECT COUNT(*)
FROM [DiscountCode] AS [t1]
WHERE [t1].[ProductId] = [t0].[ProductId]
) AS [count]
FROM [Product] AS [t0]
WHERE [t0].[ProductId] = @p0
特に、関連するテーブルにさらにカウントを追加する必要がある場合、これはあまり効率的ではないようです。
このクエリを最適化するより良い方法はありますか?
ありがとう