[Codeigniter-users] SELECT count(*)について

Back to archive index

kunitsuji tsuji****@m-s*****
2008年 6月 18日 (水) 18:32:22 JST


 kunitsujiです。

今旬の話題のnum_rowをみてみました。

count(*)でとるのと
num_rowでとるのとでは、
検索結果をとるか、条件に合わせたCOUNTを行うかですね。

よくあるのが、LIMITをつけて取得件数を分けてページネーションするのですが、
そのときに全体の件数をとる特にCOUNTを使いますが(MyISAMとか)

num_rowの場合はSQLに対しての件数ですから、LIMITで20件だと20ですね。

そう考えると、どういうときにCOUNTをするのかで使い方が変わってきますね。

MySQLのバージョンにもよりますが
SELECT FOUND_ROWS()
を使っているのかとおもいました。
まあ、num_row()であれば、結果取得に対しての件数だから正しいんでしょうか
ね。

どういうときに使うかですね。

>櫻井です。
>
>> これ単に PHP の文法の問題ですね。オブジェクトでも
>> 
>> $query->row()->{'count(*)'}
>> 
>> でたぶん取得できるんじゃないかと思います。
>
>そういう書き方があるんですねー。
>勉強になります。
>
>> ちなみに、メモリを気にしない富豪的なコードは、
>>
>> $query = $this->db->getwhere(...);
>> return $query->num_rows();
>
>コレでいきたかったんですが、
>    「メモリが足りません。全然。」
>とPHPから怒られるので・・・。
>流石に帰ってくるのが1万件オーバーのクエリだと無理があったようです。
>(やっぱりデータベースの設計やSELECT条件が気まずいのかもしれない)
>
>> 例えば、こんな感じの方がいいのではないかと思います(これは AR
>> 使ってないケースですが)。
>> 
>> $sql = "SELECT count(*) AS count FROM ...";
>> $query = $this->db->query($sql);
>> return $query->row()->count;
>
>こっちのがスマートですね。
>SQL知らない人なので、ASというのを知らなかったorz
>
>-- 
>
>名古屋市立大学大学院 経済学研究科
>櫻井 雄大 (Y_Sakurai)
>mail: sakur****@gmail*****
>
>_______________________________________________
>Codeigniter-users mailing list
>Codei****@lists*****
>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users




Codeigniter-users メーリングリストの案内
Back to archive index