количество (*) по сравнению с количеством (имя столбца) - который более корректен? [дубликат]

101
задан Deduplicator 26 September 2014 в 23:01
поделиться

5 ответов

Ваше использование COUNT(*) или COUNT(column) должно основываться на желаемом выводе только.

135
ответ дан 24 November 2019 в 04:40
поделиться

Это относится к MySQL. Насчет остальных я не уверен.

Разница в следующем:

  • COUNT (*) подсчитывает количество записей.
  • COUNT (имя_столбца) подсчитает количество записей, в которых имя_столбца не равно нулю.

Следовательно, вы должны использовать COUNT (*) . Если вы используете MyISAM и нет предложения WHERE , то оптимизатору даже не нужно смотреть на таблицу, поскольку количество строк уже кэшировано.

33
ответ дан 24 November 2019 в 04:40
поделиться

Когда это идентификатор (и гарантированно не NULL ), то это, вероятно, не имеет значения.

Однако есть разница между COUNT (*) и COUNT (столбец) в целом, в этом COUNT (столбец) вернет количество значений, отличных от NULL в столбце. Существует также вариант COUNT (DISTINCT column) , который возвращает количество уникальных значений, отличных от NULL .

19
ответ дан 24 November 2019 в 04:40
поделиться

Да, возможна разница в производительности. В зависимости от вашего запроса и индексации рассматриваемой таблицы может быть быстрее получить счет из индекса, а не переходить к таблице для данных. Таким образом, вам, вероятно, следует указать имя поля вместо использования *.

5
ответ дан 24 November 2019 в 04:40
поделиться

В целом то же самое, но в деталях AFAIK "count (*)" лучше b / c "count (columnname)" заставляет БД выполнять немного больше кода для поиска имени этого столбца (но не обязательно).

5
ответ дан 24 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: