違いはありません。
理由:
オンラインの本は「
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
"
「1」はnull以外の式であるため、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年8月
DBA.SEに関する同様の質問。
編集、2011年12月
COUNT(*)
ANSI-92で具体的に言及されています(「Scalar expressions 125
を探してください」 ")
ケース:
a)COUNT(*)が指定されている場合、結果はTのカーディナリティになります。
つまり、ANSI規格は、それがあなたの言っていることを明白に出血していると認識しています。 COUNT(1)
RDBMSベンダーによって最適化されています理由 この迷信の。それ以外の場合は、ANSIに従って評価されます
b)それ以外の場合は、TXをTの各行に
を適用してnull値を削除した結果の単一列テーブルとします。 1つ以上のnull値が削除されると、完了条件が発生します:警告-