Производительность функции COUNT SQL - PullRequest
13 голосов
/ 17 ноября 2009

У меня есть два варианта при написании оператора SQL с функцией COUNT.

  1. SELECT COUNT(*) FROM <table_name>
  2. SELECT COUNT(some_column_name) FROM <table_name>

С точки зрения производительности, что является лучшим оператором SQL? Могу ли я получить прирост производительности с помощью опции 1?

Ответы [ 3 ]

20 голосов
/ 17 ноября 2009

Производительность не должна иметь значения, потому что они делают 2 разных агрегата

  • COUNT(*) - все строки, включая NULL
  • COUNT(some_column_name), исключая NULL в "some_column_name"

См. Вопрос « Количество (*) и Количество (1) » для более

4 голосов
/ 17 ноября 2009

Вариант 2 фактически подсчитывает все поля, где some_column_name не равно нулю. Вариант 1 подсчитывает все поля, где любое поле не является пустым. Таким образом, вы можете получить разные результаты из этих двух запросов. Большую часть времени вы действительно хотите сосчитать все строки, и тогда самый быстрый вариант, который не проверяет ни одно из полей, это просто SELECT COUNT(1) FROM ...

1 голос
/ 17 ноября 2009

Нет, в Sql Server нет прироста производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...