Mysql深度分頁詳解

在做查詢的時候經常做分頁,然後隨着數據庫數據量增大,頁數增多(即偏移量的增加),查詢速度頁成指數下降

SQL:select  * from student  where sno>1200 and ssex='f' ORDER BY s_id ASC LIMIT 100,50

簡單說就是後面的分頁參數LIMIT 100,50, LIMIT 10000,50, LIMIT 100000,50,LIMIT 1000000,50

隨着第一個參數(即偏移量的增加),查詢的速度呈現指數增長趨勢。

我們如何解決這個問題啦,首先明確問題在與偏移量的增大。所以解決方案是減少偏移量。

以下提供的解決方案都是基於存在子增長的Id,(一般在設計表的時候一定會有一個自增長的Id)

我們知道按照Id升序排序,我們在查詢上一頁的時候返回Id字段,當查詢下一頁時我們將上一頁最後那條數據的Id傳遞

到後臺,作爲查詢參數。

我們知道上圖的最大id爲201368,因此在我們查詢下一頁的SQL語句應該這樣寫,將自增長Id作爲一個查詢參數。

select  * from student  where s_id>201368 and sno>1200 and ssex='f' ORDER BY s_id ASC LIMIT 5

這樣可以曾幾何倍數增加查詢速度。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章