Отдельные и групповые — производительность запросов

Запрос А

SELECT Distinct ord_no FROM Orders 
ORDER BY ord_no

Запрос Б

SELECT ord_no FROM Orders 
GROUP BY ord_no
ORDER BY ord_no

В таблице «Заказы» ord_no имеет тип varchar и имеет дубликат. Здесь составной ключ со столбцом идентификаторов.

  1. Могу я узнать, какой запрос лучше?
  2. Как проверить производительность запросов с помощью MS SQL Server 2008 R2 (экспресс-версия)?

person soclose    schedule 05.05.2014    source источник
comment
СГРУППИРОВАТЬ полностью.   -  person M.Ali    schedule 05.05.2014
comment
Связано с Когда производительность Distinct и Group By отличается?. ;).   -  person shA.t    schedule 13.04.2015


Ответы (2)


Проверьте планы выполнения для обоих запросов. Очень вероятно, что они будут одинаковыми, особенно с таким простым запросом (вы, вероятно, увидите оператор stream aggregate, выполняющий группировку в обоих случаях).

Если планы выполнения одинаковы, то между ними нет (статистически значимой) разницы в производительности.

Сказав это, используйте group by вместо distinct всякий раз, когда сомневаетесь.

person dean    schedule 05.05.2014

Вы можете увидеть количество времени, которое занимает каждый запрос в миллисекундах, в профилировщике SQL. В студии управления перейдите в «Инструменты» -> «Профилировщик» и запустите трассировку в своей БД. Запустите ваши запросы. Вы можете увидеть продолжительность, которую они заняли. Имейте в виду, вам понадобится значительный объем данных, чтобы увидеть разницу. Вы можете использовать SQL Express Profiler, если вы не используете полнофункциональную версию SQL.

person aceanindita    schedule 05.05.2014