SQLのCOUNT(*)とCOUNT(1)の違いと使い方


  1. COUNT(): COUNT()は、指定されたテーブルのすべての行を数えます。この関数は、テーブル内のすべての列を含む行をカウントします。例えば、以下のようなクエリを実行します。
SELECT COUNT(*) FROM テーブル名;

このクエリは、指定したテーブル内のすべての行の数を返します。

  1. COUNT(1): COUNT(1)は、指定されたテーブルのすべての行を数えますが、実際には1という定数値を使用してカウントを行います。つまり、COUNT(1)はテーブル内のすべての行に対して1をカウントします。以下のようなクエリを実行します。
SELECT COUNT(1) FROM テーブル名;

このクエリも、指定したテーブル内のすべての行の数を返しますが、COUNT(*)と比較して若干のパフォーマンスの違いがあります。

どちらの関数を使用するかは、実際の要件によります。一般的には、COUNT()を使用することが推奨されます。なぜなら、COUNT()はテーブル内のすべての列を含む行をカウントするため、将来的に列の追加や変更があっても正確な結果を返し続けるからです。一方で、COUNT(1)は固定の値を使用しているため、将来的な変更に対して柔軟性が低くなります。

上記の例に加えて、他のCOUNT関数の使用例も挙げてみます。

  1. COUNT(column_name): COUNT(column_name)は、指定された列の値がNULLでない行の数を数えます。以下のようなクエリを実行します。
SELECT COUNT(column_name) FROM テーブル名;

このクエリは、指定した列の値がNULLでない行の数を返します。

  1. COUNT(DISTINCT column_name): COUNT(DISTINCT column_name)は、指定された列の重複を排除した値の数を数えます。以下のようなクエリを実行します。
SELECT COUNT(DISTINCT column_name) FROM テーブル名;

このクエリは、指定した列の重複を排除した値の数を返します。

これらの例は、SQLのCOUNT関数の一部です。どの関数を使用するかは、具体的な要件とパフォーマンス要件に基づいて選択する必要があります。