コメントありがとうございます。 サービス終了した今なら、安く中古が手に入りそ…
ページリンクを実装する時にコストを低くする方法
基本的にはページリンクを作成した時、
SQL_CALC_FOUND_ROWSとLIMIT OFFSETを使いたくなるだろう
でもこれは、LIMITしていながら全てのレコードを処理しているに過ぎない
どうしてもCOUNT値を取得したい場合は、
カウント用の別テーブルを作成して、そちらで取得するといいだろう
もちろんカウント用のテーブルには本来のテーブルと同じWHEREで処理できる必要がある
LIMIT OFFSETにしても数百、数千のレコードならあまり気にする必要は無いかもしれないが、
将来的に考えて対策をしておいても良いだろう
たとえば
SELECT * FROM table WHERE foo>bar LIMIT 10 OFFSET 10000000;
と言う場合、ご丁寧に1000万件に達するまで条件判断している
SELECT * FROM table WHERE id>=[int] LIMIT 11;
と言うようにすると良い
11件目のデータは表示用ではなく、次のページが存在する為の確認である
これにより、先頭のデータからすべて条件判断せずに
一気に指定されたidから数件のデータを処理するだけで良い
同様に前のページが存在するかの確認は
SELECT * FROM table WHERE id<[int] ORDER BY `id` DESC LIMIT 1
これをUNIONすればひとつのクエリで済む
そもそも<前へ 1 2 3 4 5 次へ >のような場合には意味がないかもしれない
はたしてこのようなページリンクが必要なのだろうか?
検索
コメントを残す