Когда производительность Distinct и Group By отличается?
В простых запросах я знаю, что планы производительности и исполнения Distinct и Group By практически одинаковы.
например.
SELECT Name FROM NamesTable GROUP BY Name
SELECT DISTINCT Name FROM NamesTable
Но я читал в некоторых сценариях, что их производительность будет отличаться, например. в подзапросах и т.д.?
Итак, не могли бы вы привести несколько примеров или объяснить некоторые сценарии, где их производительность отличается?
Большое спасибо
Ответы
Ответ 1
Если вы включите вычисленное значение в список полей, вы увидите разницу в плане выполнения.
select Value,
getdate()
from YourTable
group by UnitID
select distinct
Value,
getdate()
from YourTable
Агрегаты запросов group by
перед вычислением скалярного значения. Запрос distinct
вычисляет скалярное значение перед агрегатом.
Ответ 2
Вот два примера: один для получения другого результата, а другой для другой производительности:
![Example for producing different performance]()
И второй пример:
![Example for producing different result]()