Вопросы о функции COUNT ('') и ее разновидности - PullRequest
2 голосов
/ 21 сентября 2011

Есть ли разница между COUNT('') и COUNT(*) и COUNT(1) и COUNT(ColumnName)?Какой подход быстрее?

Ответы [ 3 ]

6 голосов
/ 21 сентября 2011

Count(ColumnName) зависит от значения столбца. Другие варианты делают то же самое.

Count(*) медленнее в некоторых базах данных (в том числе MySQL), потому что он извлекает все поля без необходимости. Вот почему часто 'x' или 1 используется для обеспечения безопасности. SQL Server и Oracle несколько умнее и не получают значения полей, если в этом нет необходимости.

Обратите внимание, что '' равно NULL в Oracle (да, это так!), Что может иметь нежелательный эффект. Не проблема для SQL Server, но вы можете использовать 1 для безопасности.

4 голосов
/ 21 сентября 2011

COUNT(''), COUNT(1) и COUNT(*) вернут одинаковый результат. COUNT(ColumnName) может возвращать другое значение, поскольку COUNT учитывает только ненулевые значения.

По производительности они должны быть эквивалентны, по крайней мере, на SQL-сервере.

1 голос
/ 21 сентября 2011

Для SQL Server 2008 все вызовы COUNT(''), COUNT(1), COUNT(*), COUNT(NOT NULL column) будут преобразованы в COUNT(*) = счетчик, и будет выполнен только один COUNT.

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