出现问题原因:
①系统早期建设时数据量不大, 性能问题没有暴露出来;
②很多开发商把这种写法固化到了产品框架中, 导致后期开发人员根本不关心这类问题
一、优化方案
1.普通方案(主键子查询法)
优化后的分页查询写法, 会先查询翻页中需要的N条数据的主键值(emp_no) , 然后根据主键值回表查询所需要的N条数据, 在此过程中查询N条数据的主键id在索引中完成, 所以效率会高一些。
弊端:
- 偏移1000以上使用效果好
- 数据必须是连续的
- 性能不是最优
2.业务优化写法(more方法)
通过业务实现优化可以更有效的减少1方法的性能瓶颈,用这种写法页面上需要用过more来获取更多数据,而不是存粹的翻页。
因此, 每次查询只需要使用上次查询出的数据中的id来获取接下来的数据即可, 但这种写法需要业务配合。
3.limit限制优化法
把limit偏移量限制低于某个数。。超过这个数等于没数据,alibaba是这样做的
- 优化方案