• ベストアンサー

Count(*)について

count(*)とcount(カラム名)ではどちらが動作が軽いでしょうか? スペックの悪いマシンを使用しているので、できるだけ軽い処理のほうを選びたいと思っています。 また、そもそもcount()は、普通のselectで1行読み出すより、処理は重いのでしょうか?重いとしたら、とんでもなく重いのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • masa6272
  • ベストアンサー率66% (93/140)
回答No.3

COUNT(*)の方が速いです。 理由は、カラムの値を見に行かないからです。 COUNT(カラム名)は、null値のチェックを行います。 普通のSELECT文が何を指すかは分かりませんが、インデックスのないカラムを使った全行を見ないといけないSELECT文より速いでしょう。

その他の回答 (2)

回答No.2

count関数で*を指定するか、列名を指定するかは、null値の扱いが変わってきます。 count関数で指定する列がインデクスを有効利用できる場合は、インデクスのみで結果を得られ、データ部へのアクセスを抑止できます。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

1) 多分ですが・・MySQL側で最適化してしまうので差はないと思います。 2) 単純なselectよりは若干応答時間はかかります。ただしselectで読み出してプログラムでカウントするよりは「トータルでは」MySQLに任せたほうが確実に速いです。

関連するQ&A