777精品出轨人妻国产,熟女av人妻一区二区三四区,国产精品无码中文在线av,美脚パンスト女教师在线观看

數據庫中的Limit進行分頁

原創 收藏 評論
舉報 2014-12-09

怎么運用數據庫的LIMIT進行分頁呢,今天課課家小編在這里為大家講解。

先簡單說一下LIMIT的原理。這里以LIMIT N,M為基礎:LIMIT首先要找查N+M行,然后從N行處,取M行。那么這樣的SQL對一次查詢1275500一個操作應該是一個昂貴的開銷。對于LIMIT這類的優化,第一個目標就是讓N變的盡可能的小或是不用。

   怎么才能使這個N盡可能小呢。我們能做的其實就是用相對的值,給分頁一個提示。如現在我們看的是第5頁,看完看想看第6頁,第6頁同樣顯示是20條記錄。我們就可以想到,以這個例子為準:我們可以肯定的是第6頁的日值應小于第5頁的,如果第5頁的最小日值為:2009-11-4,那我們就可以用:

 

以下是代碼片段:

SELECT * FROM pw_gbook WHERE uid=’48’ and postdate<’2009-11-1’ ORDER BY postdate DESC LIMIT  20; 

it部落窩

   這樣來查詢第6頁的內容。同樣對于查看第4頁的內容(假設第5頁的最大日期為:2009-11-3)則第4頁的內容為:

以下是代碼片段:

SELECT * FROM pw_gbook WHERE uid=’48’ and postdate>’2009-11-3’ ORDER BY postdate DESC LIMIT  20; 

 

    這是一個基本的思想。接下來討論一下怎么展現的問題。

    再說一下這種業務的SQL怎么實現:對于分頁的展示可以用多用類型。這里說三種常用的類型:

 

   第一種:顯示“上一頁” “下一頁”這種類型

 

    這種方式相對簡單也就出現了我們看到那種SQL不思考的寫法。合理的做法:

 

    第一頁:

 

以下是代碼片段:

SELECT * FROM pw_gbook WHERE uid=’48’ ORDER BY postdate DESC LIMIT  20; 

技能培訓

    第二頁:根據第一頁的postdate進行查詢如:     

 

以下是代碼片段:

SELECT * FROM pw_gbook WHERE uid=’48’  and postdate<’2009-11-3’  ORDER BY postdate DESC LIMIT  20; 

    為什么說這個簡單呢,這個不存在跳頁的問題。接下來這種就存在一個跳頁的問題了。

    第二種:顯示 “ 1,2,3,4,5…”

    第一頁: 還是以第一頁的方式實現:        

以下是代碼片段:

SELECT * FROM pw_gbook WHERE uid=’48’ ORDER BY postdate DESC LIMIT  20; 

    第二頁:和原來一樣。如果跳頁,如從第二頁跳到第5頁,這里有一個第二頁的最小日期為:2009-11-3(假設值,可以由第二頁的程序查詢得到),第二到第5,差2頁,每頁20條記錄,那么就可以用:

以下是代碼片段:

SELECT * FROM pw_gbook WHERE uid=48’  and postdate<2009-11-3’  ORDER BY postdate DESC LIMIT  40,20; 

 

    看到這里明白為什么大型網站的分頁不是一下標識出來完了,讓都能點了吧。也不會給你一個框讓你輸入一個頁跳過去了。如果跳的頁面過多,也就存在N值過大的問題了。所以要想辦法必免。

   第三種:顯示 “1,2,3,45,…末頁” 或是 “首頁,<<100,101,102,103 >>末頁”

 

   這里有一個特殊的一地方:

 

   別的頁面的跳轉的上面一樣。這里就加一個末頁,這里又分兩種情況,如果知道最后一頁是多少頁,也就知道了前一頁的最小日期(分頁提示值),這樣就可以用上面的方法查看最后一頁的內容(會出現不足20條的現象),另一種,我就不知道最后是第幾頁,我就是想看看最后什么樣子,那么就可以用(一定是顯示20條):

以下是代碼片段:

SELECT * FROM pw_gbook WHERE uid=’48’ ORDER BY postdate ASC limit 20; 

 

    首頁這里就不在說了。

數據庫學習

    具體怎么實現搞明白了,就可以做PHP代碼的修改了。稍稍修改一下,就會帶來意想不到的效果。

 

   這里只是一個通用的分頁處理方法。不同的業務有可能還有不同的方法處理。如果在條件可能和情況可以考用:between … and .. 帶代替limit分頁操作。

 

   第三種方法:

 

    簡單的邏輯轉換。  

 

以下是代碼片段:

SELECT * FROM pw_gbook WHERE uid=’48’ ORDER BY postdate DESC LIMIT 1275480,20; 

    轉換成:

以下是代碼片段:

SELECT * FROM pw_gbook WHERE id>1275480 and  uid=’48’ ORDER BY postdate DESC LIMIT 20;

文章來源于在線學習平臺 www.kokojia.com,轉載請注明!

    評論

    文明發言,無意義評論將很快被刪除,異常行為可能被禁言
    DIGITALING
    登錄后參與評論

    評論

    文明發言,無意義評論將很快被刪除,異常行為可能被禁言
    800

    推薦評論

    暫無評論哦,快來評論一下吧!

    全部評論(0條)

    主站蜘蛛池模板: 科尔| 台江县| 达尔| 镇宁| 南漳县| 吐鲁番市| 五河县| 铜山县| 上栗县| 汝州市| 印江| 方城县| 开鲁县| 平昌县| 陆河县| 专栏| 南京市| 深圳市| 阳朔县| 榕江县| 比如县| 德昌县| 九寨沟县| 巴青县| 施秉县| 天全县| 卢氏县| 呼玛县| 茌平县| 连城县| 察哈| 沅陵县| 松桃| 临高县| 沽源县| 姜堰市| 庆安县| 阳城县| 石林| 临沧市| 龙山县|