COUNT(*)


COUNT(式) → 式がNULLでない行数を戻す。


なので、式にカラムを指定した場合はそのカラムの値がNullであった場合、
そのレコードはカウントされない。
また、Nullかどうか判断するということは指定したカラムのインデックスによっても
パフォーマンスが左右される。
(インデックスのよってはCOUNT(*)より速くなることもあり得るかも知れませんが常にというわけではありません)


よって、件数の取得でCOUNT(カラム名)とカラム名を指定するようなコーディングはバッドノウハウと思われる。
※DISTINCTを使用する場合は別。


上記の理由により、COUNT(*)と指定するのが、可読性も含めて最も好ましいと思われる。


なお、Oracleの場合はCOUNT(rowid)と記述するパターンもあるが、
これも*と比べて速くなるかというと微妙。
もし、速くなったとしても誤差の範囲内と思われる。