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

这样可以曾几何倍数增加查询速度。

 

 

 

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