Oracleでのcount1とcount*の違いは何ですか?

Oracleでは、COUNT(*)とCOUNT(1)はどちらも行数を集計する集約関数です。しかし、それらの間には細かな違いがあります。

  1. COUNT(*)関数は、クエリの結果セット内の行数をカウントするために使用されます。すべての列とNULL値も含まれます。具体的な値は考慮されず、行の存在のみに着目します。したがって、COUNT(*)はNULL値を含むすべての行数を返します。
  2. COUNT(1)関数は、問い合わせ結果セット内の行数をカウントするために使用されますが、各行の非null値をチェックすることで実現されます。COUNT(1)は行の存在のみを考慮し、列の値には関心を持ちませんので、1という定数を使用して各行を表現することができます。したがって、COUNT(1)は計算効率がより高い場合があります。

要总结一下,COUNT(*)和COUNT(1)在功能上是一样的,都可以用来统计行数。只是在COUNT(*)会统计NULL值的情况下,而COUNT(1)只统计非空值。所以在实际应用中,如果不需要统计NULL值,使用COUNT(1)可以更有效地进行计算。

bannerAds