Подтвердить что ты не робот

Когда производительность Distinct и Group By отличается?

В простых запросах я знаю, что планы производительности и исполнения Distinct и Group By практически одинаковы.

например.

SELECT Name FROM NamesTable GROUP BY Name
SELECT DISTINCT Name FROM NamesTable

Но я читал в некоторых сценариях, что их производительность будет отличаться, например. в подзапросах и т.д.?

Итак, не могли бы вы привести несколько примеров или объяснить некоторые сценарии, где их производительность отличается?

Большое спасибо

4b9b3361

Ответ 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