微前端架构如何改变企业的开发模式与效率提升
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~