Подтвердить что ты не робот

Что лучше в подсчете MYSQL (*) или count (1)?

Связанный (SQL Server): Count (*) vs Count (1)

Не могли бы вы рассказать мне, что лучше в производительности (MySQL)? Count (*) или count (1)?

4b9b3361

Ответ 1

Это ответ MySQL.

Они выполняют точно то же самое - если вы не используете MyISAM, тогда существует специальный случай для COUNT(*). Я всегда использую COUNT(*).

http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_count

COUNT (*) оптимизирован для возврата очень быстро, если SELECT извлекает из одной таблицы, другие столбцы не извлекаются, и нет предложения WHERE. Например:

mysql> SELECT COUNT(*) FROM student;

Эта оптимизация применяется только к таблицам MyISAM, потому что для этого механизма хранения хранится точное количество строк, и их можно получить очень быстро. Для транзакционных систем хранения данных, таких как InnoDB, сохранение точного количества строк является более проблематичным, поскольку возможны несколько транзакций, каждый из которых может влиять на счет.


ИЗМЕНИТЬ

Некоторые из вас, возможно, пропустили темную попытку юмора. Я предпочитаю держать это как не дублируемый вопрос в любой такой день, когда MySQL будет делать что-то другое, чем SQL Server. Поэтому я проголосовал за повторное открытие вопроса (с явно неправильным ответом).

Вышеуказанная оптимизация MyISAM одинаково относится к

COUNT(*)
COUNT(1)
COUNT(pk-column)
COUNT(any-non-nullable-column)

Таким образом, реальный ответ заключается в том, что они всегда одинаковы.