У меня есть запрос, в котором я хочу вернуть мастер-строки в зависимости от того, соответствуют ли детали определенным критериям.
Например, я хочу вернуть конкретную мастер-строку только в том случае, если по крайней мере одна из строк детализации имеет SomeProperty = X.
На основе следующего предиката:
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)
Проблема в том, что он выполняет сканирование таблицы, поэтому выполнение запроса занимает некоторое время.
Просто проверяю, что я не делаю ничего сумасшедшего, и задаюсь вопросом, может ли что-нибудь ускорить этот запрос?
Спасибо
Дункан