Ответ 1
Производительность не должна иметь значения, поскольку они выполняют 2 разных агрегата
-
COUNT(*)
- все строки, включая NULL -
COUNT(some_column_name)
, исключает NULL в "some_column_name
"
См. "Count (*) vs Count (1)" для более
У меня есть два варианта при написании инструкции SQL с помощью функции COUNT
.
SELECT COUNT(*) FROM <table_name>
SELECT COUNT(some_column_name) FROM <table_name>
Что касается производительности, то какой лучший оператор SQL? Могу ли я получить некоторое увеличение производительности с помощью опции 1?
Производительность не должна иметь значения, поскольку они выполняют 2 разных агрегата
COUNT(*)
- все строки, включая NULLCOUNT(some_column_name)
, исключает NULL в "some_column_name
" См. "Count (*) vs Count (1)" для более
Вариант 2 фактически считает все поля, где some_column_name
не является нулевым. Параметр 1 подсчитывает все поля, в которых любое поле не равно нулю. Таким образом, вы можете получить разные результаты из этих двух запросов. Большую часть времени вы действительно хотите считать все строки, а затем самый быстрый вариант, который не проверяет ни одно из полей, просто SELECT COUNT(1) FROM ...
Нет, в Sql Server нет увеличения производительности.