В базе данных это время опрашивается против содержит несколько миллионов записей - просто интересно, если следующий запрос может быть оптимизирован на всехSQl Оптимизация Где существует
SELECT Count(DISTINCT [t0].[gUserId]) AS [UserId]
FROM [Plan] AS [t0]
WHERE EXISTS(
SELECT NULL AS [EMPTY]
FROM [Entry] AS [t1]
WHERE ([t1].[PlanId] = ([t0].[id]))
AND ([t1].[EntryMobile] = 1) AND (NOT ([t0].[Deleted] = 1)))
Почему вы спрашиваете, работает ли он плохо? Правильно ли указаны столбцы, которые вы указали? Вы проверили план выполнения для узких мест? Нужна дополнительная информация. – JiggsJedi
Часть WHERE может быть оптимизирована с использованием индексов. Если вы создаете индекс покрытия (все поля включены - planid, entrymobile) на t1, то следующей худшей частью будет COUNT (DISTINCT). Уверен, что вам нужно также включить индекс (id, deleted, guserid) на t0. – Arvo
@HellBaby Я не согласен с вышеприведенным утверждением о том, что соединения в 4K раз быстрее, чем инструкция существования ... Мне бы хотелось увидеть некоторые доказательства этого https://stackoverflow.com/questions/7082449/exists-vs-join- and-use-of-exist- – JiggsJedi