概述
limit'分页有一个问题就是当偏移量较大时查询遍历的数据越多,效率会逐渐降低,例如limit 1000,10这样的查询这时MYSQL需要查询出1020条记录然后只返回最后20条,前面的1000条记录都会被抛弃,代价较高。如果每个分页被访问的数据频率都相同要优化这种查询要么是在页面中限制分页的数量要么是优化大偏移量的性能。
优化此类分页查询的最简单的一个办法就是尽可能的使用索引覆盖扫描,而不是查询所有的列。然后根据需要做一次关联操作再返回所需的列,对于偏移量很大的时候,这样做的效率会提升很大。以下面的查询作为示例,以主键info_id(主键)作为覆盖的索引
目前表的数据总量是90122条数据
接下来我们进行几个分页数据的测试与对比
一:首先是第五十条数据之后获取20条
普通用时0.007s
延迟关联用时0.003s
二:首先是第五十条数据之后获取5000条
普通用时0.046s
延迟关联用时0.007s
三:首先是第五十条数据之后获取50000条
普通用时1.131s
延迟关联用时:0.043s
还有另外一种方式select info_id,info_oldNO,info_title from zb_projectinfo where info_id >(select info_id from zb_projectinfo limit 50000,1 )limit 20这样的语句和延迟关联性能差距不大
还有另外一种方式
最后
以上就是漂亮蜗牛为你收集整理的优化limit分页(延迟关联)的全部内容,希望文章能够帮你解决优化limit分页(延迟关联)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复