- ベストアンサー
Count(*)について
count(*)とcount(カラム名)ではどちらが動作が軽いでしょうか? スペックの悪いマシンを使用しているので、できるだけ軽い処理のほうを選びたいと思っています。 また、そもそもcount()は、普通のselectで1行読み出すより、処理は重いのでしょうか?重いとしたら、とんでもなく重いのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
COUNT(*)の方が速いです。 理由は、カラムの値を見に行かないからです。 COUNT(カラム名)は、null値のチェックを行います。 普通のSELECT文が何を指すかは分かりませんが、インデックスのないカラムを使った全行を見ないといけないSELECT文より速いでしょう。
その他の回答 (2)
- chukenkenkou
- ベストアンサー率43% (833/1926)
回答No.2
count関数で*を指定するか、列名を指定するかは、null値の扱いが変わってきます。 count関数で指定する列がインデクスを有効利用できる場合は、インデクスのみで結果を得られ、データ部へのアクセスを抑止できます。
- shimix
- ベストアンサー率54% (865/1590)
回答No.1
1) 多分ですが・・MySQL側で最適化してしまうので差はないと思います。 2) 単純なselectよりは若干応答時間はかかります。ただしselectで読み出してプログラムでカウントするよりは「トータルでは」MySQLに任せたほうが確実に速いです。