Oracle count(1)とcount(*)の違いとは?【徹底比較】
Oracleにおいて、COUNT(1)とCOUNT(*)は行数を計算する集計関数ですが、それらにはわずかな違いがあります。
- COUNT(1)は各行で1の数を数えて、空でない値の行数を返します。この方法は比較的高速です。各行で1つの値だけをチェックすれば良いからです。
- COUNT(*)はNULL値を含めてすべての行の数を計算します。この方法は遅くなりがちです。すべての列が空であるかどうかを1行ずつチェックする必要があるためです。
大部分の場合、COUNT(1)とCOUNT(*)の結果は同じですが、パフォーマンスの最適化を考慮する場合は、より高速なクエリ結果を得るためにCOUNT(1)を使用することが考えられます。