В SQL есть разница между count (*) и count (<fieldname>) - PullRequest
13 голосов
/ 12 января 2009

Довольно понятный вопрос. Есть ли причина использовать один или другой?

Ответы [ 5 ]

46 голосов
/ 12 января 2009

Count (*) считает все записи, включая нули, тогда как Count (имя поля) не включает нули.

6 голосов
/ 12 января 2009

Select count (*) выбирает любую строку, select count (field) выбирает строки, в которых это поле не равно нулю.

3 голосов
/ 31 июля 2009

Если вы хотите улучшить производительность (т. Е. Быть нацистами), вы можете не делать ни того, ни другого.

Пример:

SELECT COUNT(1) FROM MyTable WHERE ...
1 голос
/ 12 января 2009

Это меня тоже немного озадачило.

В MySQL, по крайней мере, COUNT(*) подсчитывает количество строк, где каждое (*) значение в строке не равно нулю. Просто COUNT в столбце будет подсчитано количество строк, в которых этот столбец не равен нулю.

С точки зрения производительности использование одного столбца будет немного быстрее,

0 голосов
/ 12 января 2009

count (*) быстрее, если тип таблицы MyISAM без оператора WHERE. С WHERE скорость будет одинаковой для MyISAM и InnoDB.

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