count() vs num_rows


count関数を使用するのとnum_rows関数の速度はもちろんcount関数の方が早い。

もちろん場合にもよる。

レコード数が100で件数と結果を表示させたいとき。

SELECT * FROM table_name WHERE...;

...num_rows関数

これならいいが、ページングなどをする際に件数と結果を飛ばすときなど

SELECT * FROM table_name WHERE...;

$kensu = ...num_rows関数

SELECT * FROM table_name WHERE... limit $kensu, 10;

のようにする時、件数が増えれば増えるほど全件検索を行うことになり、相当遅くなる。

こういった場合は

SELECT count(*) AS num FROM table_name WHERE...;

$kensu = ...mysqli_fetch_assoc(...

SELECT * FROM table_name WHERE... limit $kensu, 10;

こういうふうにすると劇的に速度が変わる。

基本的にnum_rowsで件数を取得する場合はついでと考えたほうがいいかも。

メインで件数取得をする際はcount関数がbetter

ちなみに20万件あるテーブルで比較したらnum_rowsよりcount関数を使用してページングしたら0.5秒→0.02秒にまで早くなった。

結局ケース・バイ・ケースになるけど仕様に合わせてクエリの作成が必要だな・・・。

ここでもやってた

http://www.talkphp.com/mysql-databases/4090-count-vs-num_rows.html


この投稿へのコメント

コメントはありません。

コメントを残す

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL