-1

重複の可能性:
Count(*)とCount(1)

テーブルがある場合、「id」が主キーである場合、これら2つのコマンドのパフォーマンスは異なりますか?

select count(*) from t;
select count(id) from t;

ありがとう

4

3 に答える 3

0

いいえ、Oracleが引き継ぎ、次の場合に最速の方法を取りますcount(*)

于 2012-06-04T17:51:09.760 に答える
0

これらは同じパフォーマンスになります。ほとんどのデータベースでは、count()によってテーブルまたは使用可能なインデックスがスキャンされます。テーブルの代わりにインデックスを使用するかどうかは、クエリオプティマイザのみに依存します。オプティマイザがインデックスを使用するのに十分賢い場合は、どちらの場合も十分賢いはずです。

使用可能なメタデータテーブルを使用すると、count()クエリを使用するよりも、テーブル内の行数をはるかに効率的に取得できることがよくあります。

于 2012-06-04T17:52:09.590 に答える
0

idが主キーの場合、count(*)とcount(id)の両方が意味的に同等であると思います。

しかし、読者にとって count(id)は、idがnullではないすべての行をカウントする意図を意味します。混乱を避けるために、私はむしろcount(*)を使用したいと思います。

于 2012-06-04T17:59:11.800 に答える