基于MySql 多表分页查询优化技术

通过逻辑判断避免多表扫描及 union 操作, 根据页面偏移量快速定位查 询所要涉及的表, 从而有效避免不必要的操作, 提高 了查询效率

本算法先根据 指定的条件确定查询所要涉及的分表, 再根据查询条
件算出各个表中符合条件的记录数; 然后将各个分表
中符合条件的记录数相加得到符合条件的总记录数,
从而根据页面大小计算记录总页数. 根据用户页面传
过来的页数计算偏移量, 通过偏移量和页面的大小以
及各个表中的符合条件的记录数做比较, 得出需要返
回给用户的数据存在于哪张表中, 然后从该表中返回
给用户指定偏移量以及指定数量的记录即可.

本算法通过逻辑判断精确地得出了数据所在的表, 使每次查
询只需要查询一张表. 在极端的情况下每个表只有少
量的数据需要查询, 多张表才能获取一页的数据, 通过采用精准的单表查询过滤符合条件的数据返回给用
户. 由于当符合条件的数据量比较小时执行计划会合
理利用内存操作以获得较高的查询效率. 通过以上分
析可以看出, 本算法避免了不必要的多表扫描和union.

http://www.c-s-a.org.cn/csa/ch/reader/create_pdf.aspx?file_no=20160830&flag=1&year_id=8&quarter_id=

原文下载:

Yii2在restful接口响应主体中返回分页信息

在需要显示分页信息的controller中添加以下代码