• 主頁 > 技術知識 > php分頁代碼與分頁原理
      這樣才能知道分幾頁。
       比如說一個列表結果是126行,如果一頁20行的話那么分7頁,對吧。
       我們的代碼經理是這樣的:
       計算總行數:select count(*) from tablename where …..
       查詢列表select * from tablename where … limit…
       我們看這種方式再沒有任何優化的方式下這樣第個列表都是再次查詢。
       首先我們假設數據更新頻率不是很高的情況下,我們點第1頁,第2頁 。。。第n頁 其實第一句sql得到的都是同一個結果,這樣是不是后面都在做重復工作呢。那我們第1頁得到結果數后是不是可以將結果一下傳遞下去就行了。
       例如我們分頁鏈接第2頁是這樣的 list.php?page=2&count=126
       在程序上加一個判斷:
      
    if ($_get['count']) {
    $count = $_get['count'];
    } else {
    $count =select count(*) from tablename where …..
    }

       這樣優化以后如果我們只有第一頁才計算總數,后面的頁數都不用了,這樣是不是就可以提升了效率。
       還有這么種情況,也就是在模糊查詢的情況下,我們有一個應用,我估計大部分查詢結果數小于20,也就是都只有一頁結果,那么如果都去計算總數是沒有必要的,而且模糊查詢效率也比較低。所以我突然想到跳出原來的思維,為什么一定要先計算總行數,再取列表呢?
       其實完全可以先查詢列表,如果列表結果數=20,那么我們再查詢總行數,因為小于20的話,其實只有一頁??傂袛稻偷扔诓槌鰜淼牧斜斫Y果數。
       偽代碼為:
      
    if ($_get['page']<2) {
    $list = select * from tablename where … limit 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 … limit page-1*20,page-1*20+20
    }

      

    ? Copyright 2014.  www. jiachong. com.  All  Rights  Reserved粵ICP備11096607號-19

    全部免费的毛片在线看