-
COUNT(*)
結果セット(またはGROUP BYを使用している場合はグループ)のすべての行をカウントします。 -
COUNT(column_name)
column_name
がある行のみをカウントします NULLではありません。値をチェックする必要があるため(列がNULL可能でない場合を除く)、NULL値がない場合でも、状況によってはこれが遅くなる場合があります。 -
COUNT(1)
COUNT(*)
と同じです 1がNULLになることはないからです。
結果の違いを確認するには、この小さな実験を試すことができます:
CREATE TABLE table1 (x INT NULL);
INSERT INTO table1 (x) VALUES (1), (2), (NULL);
SELECT
COUNT(*) AS a,
COUNT(x) AS b,
COUNT(1) AS c
FROM table1;
結果:
a b c 3 2 3