ページング書く際のMySQLの処理
- 2010年06月10日
- カテゴリ:MySQL
今日ズーット悩んだんだけど、ページングする際のMySQLの処理ってどうやったら一番効率がいいんだろうね。
まず必要なのは、
総データ件数
ページに表示するデータ
の2つを取得すること。
で書き方2つある
案1
すべてのデータをSQL文1つで取得して、そのあとPHPで処理する。
そうする事で取得データ2件を1度にクリア
利点
SQL文1個で済むので、処理が簡単。
そんな更新しないデータならクエリキャッシュで早い
欠点
データの数が多いと全データ取得でMySQLに負荷がかかる。
でもって、処理するPHPにも負荷がかかる
案2
総データ数をcountSQL文で取得して、そのあとページに表示するデータはoffset文を使いページ毎に取得。
利点
SQLの帰り値が少ない。
全体的に必要最低限のデータでやり取りする
欠点
クエリ発行数が2個になる。
受け取るデータが限られるので、変にキャッシュするとページング内容がおかしくなる。
キャッシュできないからページ毎にクエリ投げるしかなくなる。
う~ん。
結果、データ数少ない場合は案1で、データ数多い場合は案2かな。
って思うんだけど、データ数多い、少ないってサーバースペックに依存する話だから、ややこしい
ページング書く際のMySQLの処理の続きを読む

