count (*), где cond = val, или count (cond = val) - PullRequest
0 голосов
/ 28 октября 2010

В чем разница между этими двумя методами?

select count(*) from `table` where `column` = 'value';

и

select count(`column` = 'value') from `table`;

Мне кажется, они делают то же самое; Я предполагаю, что это не относится к базе данных. Использует ли один метод индексы лучше, чем другой?

В этом случае я использую MySQL, но здесь предпочтительнее общий ответ.

Ответы [ 2 ]

3 голосов
/ 28 октября 2010

count (column = 'value')

Как правило, может показаться, что вы рассчитываете логический результат сравнения, который должен подсчитать все строки в таблице, хотя, возможно, ваша конкретная СУБД имеетисключение.

Фильтровать запрос по предложению where.Это будет хорошей привычкой, если вам когда-нибудь понадобится написать аналогичный запрос для другой базы данных.

0 голосов
/ 28 октября 2010

Запуск ваших образцов через mySQL дает разные результаты. Второй отправленный вами запрос не ограничивает набор результатов - возвращаются все строки. Первый запрос, однако, делает.

...