質問: MySQLでcountするときのカラム指定は特にしなくてよいのかどうかという事が気になっています。 職場では`count`の時に限っては`select count(*) from tables`という風にカラムは全指定にしている人が多いのですが、私は`select count(id) from tables`という風に`id`を指定する習慣があります。 自分がいつからカラム指定を始めたのか、またその理由などを覚えていないのですが、なんとなく以下の理由でやってしまっています。 * カウント文であれ、全指定は本番環境でやるべきではない(というか怖い) * カラムが指定されている方がパフォーマンスがよいはず * 特にIDだったら殆どの場合存在し、PKである ただ、どの理由も根拠がありません。 みなさんはこの理由についてどう思われますか?
回答: `count(*)` は単純に行数を返しますが、`count(col)` は col が NULL でない行数を返すという違いがあります。 カラム指定の `count()` の方は、カラムが NULL かどうかの判定をしないといけないので、もしかすると `count(*)` よりも時間がかかるかもしれません。 `*` を使うのが嫌なのであれば、カラム指定よりも `count(1)` のように定数を指定するという方法もあります。