推荐链接:
总结——》【Java】
总结——》【Mysql】
总结——》【Redis】
总结——》【Kafka】
总结——》【Spring】
总结——》【SpringBoot】
总结——》【MyBatis、MyBatis-Plus】
总结——》【Linux】
总结——》【MongoDB】
总结——》【Elasticsearch】
在系统中需要进行分页操作的时候,我们通常会使用LIMIT加上偏移量的办法实现,同时加上合适的ORDER BY子句。
需要优化的场景
在偏移量非常大的时候,需要查询并抛弃很多记录,最后却只返回很少记录文章来源:https://www.toymoban.com/news/detail-548804.html
-- 查询10010条记录然后只返回最后10条,前面10 000条记录都将被抛弃,这样的代价非常高。
select * from order_exp limit 10000,10;
优化方案一
- 首先查询翻页中需要的N条数据的主键值
- 然后根据主键值回表查询所需要的N条数据
EXPLAIN SELECT * FROM (select id from order_exp limit 10000,10) b,order_exp
a where a.id = b.id;
优点:查询N条数据的主键id在索引中完成,效率高
缺点:如果数据量大,可以还会存在性能问题文章来源地址https://www.toymoban.com/news/detail-548804.html
优化方案二
- 前端通过点击More来获得更多数据,而不是纯粹的翻页,并且每次查询只需要使用上次查询出的数据中的id来获取接下来的数据
- 后端根据主键值id,获取数据
EXPLAIN select * from order_exp where id > 67 order by id limit 10;
到了这里,关于Mysql——》优化limit分页的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!