COUNT(expr)

COUNT(expr)

SELECT 分によって引き出された行の、非 NULL 値の数を戻します。結果は BIGINT 値になります。

一致する行がない場合、COUNT()0 を戻します。

mysql> SELECT student.student_name,COUNT(*)
    ->        FROM student,course
    ->        WHERE student.student_id=course.student_id
    ->        GROUP BY student_name;

COUNT(*) は、NULL 値を含む含まざるに関わらず、引き出された行の数を戻すという点でやや異なります。

COUNT(*) は、SELECT がひとつのテーブルから検索し、他のカラムは引き出されず、また WHERE カラムがない場合、きわめて素早く戻すよう最適化されています。例 :

mysql> SELECT COUNT(*) FROM student;

この最適化は、正確な行の数がこの保存エンジンに保管されており、素早いアクセスが可能なため、MyISAM テーブルにのみ適用します。InnoDB をはじめとするトランザクション保存エンジンに関しては、正確な行の数を保存するのは、複数のトランザクションが起こって、それぞれが行の係数に影響をおよぼす場合があるため、より困難になります。