質問: MySQL 5.7 PHP 5.3.3 よくある処理だと思うのですが、検索結果を表示するページで、データ数がありページ送りがある場合の処理においてどちらがベスト(定番)な方法なのか教えて下さい。あるいは、他にもっと良い方法がありますでしょうか? 1. 最初だけfetchAllで取得した全データをSESSION変数にいれて変数に対してarray_sliceなどで取得した範囲をページ送り時に表示する。 2. 都度queryにlimit句を用いてページ送りのたびにSQL文を実行する。 テーブルの大きさも関係してくるとしたらどのくらいのサイズから意識したほうが良いでしょうか。 ちなみにメール記録用のテーブルが一番大きくてdatalengthが22.5MBくらいですが今後も大きくなる一方です。 session.save_pathというのはそのサーバーで動く全てのアプリケーションに対してトータルサイズと考えますか? php.infoでのディレクトリサイズは16MBでした。 queryの取得結果が全データだとしてもテーブルサイズまでにはならないものでしょうか?アクセスする人数によってすぐパンクしそうな気がしますが・・ ご回答よろしくお願いします。
回答: > > 2. 都度queryにlimit句を用いてページ送りのたびにSQL文を実行する。 > > > こちらのlimitとoffsetを使うやり方が一般的です。多くのフレームワークでもこの方法で実装されています。 というか、1のやり方を初めて聞きました...。ご自身でも理解されているとおり色々制限もありますので、あまりおすすめしません。