Няма разлика.
Причина:
Книги онлайн казва „
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
"
"1" е ненулев израз:така че е същото като COUNT(*)
.Оптимизаторът го разпознава такъв, какъвто е:тривиален.
Същото като EXISTS (SELECT * ...
или EXISTS (SELECT 1 ...
Пример:
SELECT COUNT(1) FROM dbo.tab800krows
SELECT COUNT(1),FKID FROM dbo.tab800krows GROUP BY FKID
SELECT COUNT(*) FROM dbo.tab800krows
SELECT COUNT(*),FKID FROM dbo.tab800krows GROUP BY FKID
Същият IO, същият план, работи
Редактиране, август 2011 г.
Подобен въпрос на DBA.SE.
Редактиране, декември 2011 г.
COUNT(*)
се споменава специално в ANSI-92 (потърсете "Scalar expressions 125
")
Случай:
a) Ако е посочен COUNT(*), тогава резултатът е мощността на T.
Това означава, че стандартът ANSI го разпознава като кървене, очевидно това, което имате предвид. COUNT(1)
е оптимизиран от доставчиците на RDBMS защото на това суеверие. В противен случай той ще бъде оценен според ANSI
b) В противен случай нека TX е таблицата с една колона, която е резултат от прилагането на <израза на стойността> към всеки ред на Tand, елиминирайки нулевите стойности. Ако една или повече нулеви стойности са елиминирани, тогава се повдига условие за завършване:предупреждение-