在做查詢的時候經常做分頁,然後隨着數據庫數據量增大,頁數增多(即偏移量的增加),查詢速度頁成指數下降
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
這樣可以曾幾何倍數增加查詢速度。