これ何て呼びますか

count(*)とcount(カラム名)ではどちらが動作が軽いでしょうか?
スペックの悪いマシンを使用しているので、できるだけ軽い処理のほうを選びたいと思っています。

また、そもそもcount()は、普通のselectで1行読み出すより、処理は重いのでしょうか?重いとしたら、とんでもなく重いのでしょうか?

よろしくお願いします。

A 回答 (3件)

COUNT(*)の方が速いです。


理由は、カラムの値を見に行かないからです。
COUNT(カラム名)は、null値のチェックを行います。

普通のSELECT文が何を指すかは分かりませんが、インデックスのないカラムを使った全行を見ないといけないSELECT文より速いでしょう。
    • good
    • 0

count関数で*を指定するか、列名を指定するかは、null値の扱いが変わってきます。


count関数で指定する列がインデクスを有効利用できる場合は、インデクスのみで結果を得られ、データ部へのアクセスを抑止できます。
    • good
    • 0

1)


多分ですが・・MySQL側で最適化してしまうので差はないと思います。

2)
単純なselectよりは若干応答時間はかかります。ただしselectで読み出してプログラムでカウントするよりは「トータルでは」MySQLに任せたほうが確実に速いです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!