Выполнение функции COUNT SQL

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

  • SELECT COUNT(*) FROM <table_name>
  • SELECT COUNT(some_column_name) FROM <table_name>

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

Ответ 1

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

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

См. "Count (*) vs Count (1)" для более

Ответ 2

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

Ответ 3

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