запрос - это IQueryable , который содержит много объединений и условий.
var total = await query.Select(p=>p.Id).Distinct().CountAsync();
sql, сгенерированный EF Core 2.1:
SELECT COUNT(*)
FROM ( SELECT DISTINCT [Id]
FROM (many join and condition)
) as [t]
запрос занимает около 8 секунд для возврата суммы.
Я изменяю свой sql-запрос вручную:
SELECT COUNT(distinct Id)
From (many join and condition)
и запрос занимает 3 секунды
Как переписать мой запрос linq для генерации count (отличный идентификатор) вместо select count () из (...) *