Сказать, что SELECT COUNT(*) vs COUNT(1)
результатов в СУБД возвращаются " столбцы "- чистая койка. Это может был случай, очень давно, но любой уважающий себя оптимизатор выберет какой-то быстрый метод для подсчета строк в таблице - есть НЕТ разница в производительности между SELECT COUNT(*), COUNT(1), COUNT('this is a silly conversation')
Кроме того, SELECT(1) vs SELECT(*)
НЕ будет имеют какую-либо разницу в использовании INDEX - большинство СУБД фактически будут оптимизировать SELECT(n) into SELECT(*)
. См ASK TOM: Oracle была оптимизация SELECT(n) into SELECT(*)
для большей части десятилетия, если не больше: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1156151916789
проблема заключается в COUNT (цв) для подсчета () преобразования ** 03/23/00 05:46 pm *** одним из способов является установление события 10122 на выключение счета (col) -> count () оптимизация.Другая работа вокруг - , чтобы изменить счет (col), чтобы подсчитать (), это означает то же самое, когда col имеет ограничение NOT NULL. Номер ошибка является 1215372.
Одно замечание - если вы используете COUNT (Col) (! Нет) и Col помечается NULL, то это будет на самом деле нужно подсчитать количество вхождений в таблицу (либо путем сканирования по индексу, гистограммы и т. д., если они существуют, либо полного сканирования таблицы в противном случае).
Итог: если то, что вы хотите это количество строк в таблице, используйте COUNT (*)
Это очень похоже (и может быть, это тот же ответ), но я задавался вопросом, существует ли разница между ссылкой на конкретный столбец (например, COUNT (столбец)) по сравнению с ссылкой на произвольную строку (например, COUNT ('x'),). – Andrew 2008-09-12 16:34:09