質問: 'A' の様な形でSQLに問い合わせるのですが、 その検索結果をHTML上に1000件ずつ表示させたいとすると、 いわゆるページングを用いると思うのですが、 (方法1) LIMITで1000行ずつ区切ったSQLを発行する 例 SELECT ・・・ LIMIT 0,1000 SELECT ・・・ LIMIT 1001,2000 (方法2) 検索結果を配列に入れてしまい、array_sliceで1000件ずつ取り出す 方法1の場合は1000件ごとにSQLの発行が必要。トータルのデータ件数もどこかに格納しなければならないのでそのためのSQLが余分に必要。 方法2の場合だと10万件を抽出するSQLを発行したうえでそれらを一度に配列に入れる事になるので、なんとなく負荷的に重いイメージがするのです。 MySQLのデータにPHPでページングを用いる時、どういった方法が一般的でしょうか? うまく説明出来ず大変申し訳無いです。 もしおわかりの方がおられましたらご教授お願いいたします。
回答: 方法1でよいと思いますが > > (方法1) LIMITで1000行ずつ区切ったSQLを発行する > > 例 > > SELECT ・・・ LIMIT 0,1000 > > SELECT ・・・ LIMIT 1001,2000 > > > 「LIMIT 0,1000」の次の1000件を取るなら「LIMIT 1000,1000 」じゃないですかね? 方法2は、高い確率で別のページまで検索をつづけるとか最終的に全データを 網羅することが確実なページ用途には向いていると思いますが、想定しづらいです。 利用しないデータが多い場合はリソースの無駄が大きくなります