Mysql深分页
mysql查询时, 使用limit进行分页查询, 会丢弃前面查询的数据只返回符合limit条件的记录,
在数据表头时查询快,分页越往后,需要查询并丢弃的记录越多,查询性能越慢.
方式一:
延迟关联,通过查询主键ID来减少回表, t表使用辅助索引create_time只返回ID,减少回表,再只根据主键ID索引查询数据
select
*
from TABLEA a,
(select id from TABLEA orderby create_time desc limit 400000,10) t
where a.id = t.id方式二:
基于唯一列进行定位. 缺点时必须计算出起始位置,不能跳页查询. 399999是上一页的最后的记录ID
select * from TABLEA where id > 399999 limit 0,10方式三:
业务限制.
再查询界面,最多只显示100页, 不要随意翻到30W页后. 适用于大概率不需要关注1W页后的数据
方案四:
使用ES或ChickHouse等分布式数据库.
本文链接:
/archives/1753540105610
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
刘同学的小站!
喜欢就支持一下吧