分页查询优化

网友投稿 738 2022-10-13

分页查询优化

分页查询优化

文章目录

​​分页查询优化​​

​​简单分页​​​​子查询优化​​​​直接利用索引定位优化​​

分页查询优化

当需要从数据库查询的表的数据量很庞大时,一次性查询全部记录的耗时可能会非常慢,而且,随着数据量的增多,会变得越来越耗时,这时候就需要使用到分页查询

简单分页

对于一般数据量不大,且对时间耗时不严格的业务,我们使用一般的简单分页查询就可以了

-- 跳过1000条记录,查询1000条,即一页1000条记录select * from table limit 1000 offset 1000

我个人习惯是上边的写法,或者这样写也可以:

-- 第一个参数1000:即相当于offset,跳过1000条记录-- 第二个参数10,即返回的记录数,如果第二个参数是-1即表示,查询到表结束select * from table limit 1000,10

这种简单分页查询最大的弊端就是,随着页数的增加,即offset的增加,需要跳过的无用行的行数越来越多,而mysql也是需要扫描这些无用行的,即时间复杂度是

O(M + N):M:offset行数,N:结果记录行数

那么带来的问题就是,当offset的行数越来越多时,分页的时间复杂度也会随着线性上升

子查询优化

对于自增主键ID连续的表,

select * from table where id >= (select id from table limit #{offset},1) order by id limit #{pageSize}

或者利用其它索引也可以

select * from table where key >= (select key from table limit #{offset},1)order by key limit #{pageSize}

直接利用索引定位优化

select * table where id > (pageNum * pageSize ) limit

直接利用主键索引直接定位到指定偏移行,但是这种对数据连续型要求较高

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python-jrpc-一个基于JSON RPC v2.0 的python 远程调用框架
下一篇:SpringMVC中参数绑定问题实例详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~