В SQL есть разница между count (*) и count (<fieldname>)

Довольно сам объяснительный вопрос. Есть ли какая-нибудь причина для использования того или другого?

Ответы

Ответ 1

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

Ответ 2

Выберите count (*), выберите любую строку, выберите count (field), выберите строки, где это поле не равно null.

Ответ 3

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

Пример:

SELECT COUNT(1) FROM MyTable WHERE ...

Ответ 4

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

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

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

Ответ 5

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