-
- if ($_get['count']) {
- $count = $_get['count'];
- } else {
- $count =select count(*) from tablename where …..
- }
-
コードをコピーします
最初のページのみが計算され、後続のページは使用されない場合、効率は向上しますか?
別の状況があります。つまり、ファジー クエリの場合、ほとんどのクエリ結果が 20 未満であると推定されるアプリケーションがあります。つまり、結果が 1 ページしかないため、計算する必要はありません。総数は曖昧であり、クエリ効率も比較的低いです。そこで突然、当初の考え方から飛び出して、なぜ最初に合計行数を計算してからリストを取得する必要があるのかを考えました。
リスト結果の数 = 20 の場合、最初にリストをクエリできます。それから合計行数をクエリします。20 未満の場合は、実際には 1 ページしか存在しません。
行の合計数は、見つかったリスト結果の数と同じです。
疑似コードは次のとおりです。
-
- if ($_get['page']<2) {
- $list = select * from tablename where … 制限 0,20 最初のページの最初の 20 項目を直接クエリします
- if (count($ list )=20) {
- $count =select count(*) from tablename where …..
- } else {
- $count =count($list);
- }
- } else {
- $count = $_get['count ' ];
- $list = select * from tablename where … 制限 page-1*20,page-1*20+20
- }
コードをコピー
|