国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php分頁代碼與分頁原理

2024-05-04 23:06:42
字體:
來源:轉載
供稿:網友

這樣才能知道分幾頁。比如說一個列表結果是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  ,在程序上加一個判斷:

  1. if ($_get['count']) {  
  2. $count = $_get['count'];  
  3. else {  
  4. $count =select count(*) from tablename where …..  

這樣優化以后如果我們只有第一頁才計算總數,后面的頁數都不用了,這樣是不是就可以提升了效率。

還有這么種情況,也就是在模糊查詢的情況下,我們有一個應用,我估計大部分查詢結果數小于20,也就是都只有一頁結果,那么如果都去計算總數是沒有必要的,而且模糊查詢效率也比較低。所以我突然想到跳出原來的思維,為什么一定要先計算總行數,再取列表呢?

其實完全可以先查詢列表,如果列表結果數=20,那么我們再查詢總行數,因為小于20的話,其實只有一頁。總行數就等于查出來的列表結果數。
偽代碼為: 

  1. if ($_get['page']<2) {  
  2. $list = select * from tablename where … limit 0,20  第一頁時直接查詢前20條  
  3. if (count($list)=20) {  
  4. $count =select count(*) from tablename where …..  
  5. else {  
  6. $count =count($list);  
  7. }  
  8. else {  
  9. $count = $_get['count'];  
  10. $list = select * from tablename where … limit page-1*20,page-1*20+20  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永福县| 南召县| 枣庄市| 固原市| 崇文区| 若尔盖县| 临桂县| 革吉县| 清流县| 新竹市| 临朐县| 通海县| 永平县| 芦山县| 江陵县| 随州市| 东平县| 汝阳县| 茶陵县| 客服| 香格里拉县| 乌兰浩特市| 宁波市| 河曲县| 平果县| 通渭县| 东光县| 江陵县| 剑阁县| 宝兴县| 孟州市| 安吉县| 白城市| 齐齐哈尔市| 洪洞县| 海原县| 延庆县| 东港市| 化隆| 山阴县| 阜宁县|