1. 首页
  2. 数据库
  3. Mysql

超大分页怎么处理?



一般分页查询时,通过创建覆盖索引能够比较好地提高性能。一个常见又非常头疼的问题就是 limit 1000000 , 10,此时需要MySQL排序前1000010 记录,仅仅返回1000000 - 1000010 的记录,其他记录丢弃,查询排序的代价非常大 。

示例:

explain select * from tb_sku limit 1000000 , 10 ;

执行查询耗时:

优化思路一:在索引上完成排序分页操作,最后根据主键关联回原表查询所需要的其他列内容。

示例:

explain select * from tb_sku s , (select id from tb_sku order by id limit 1000000 , 10 ) t where t.id = s.id ;

执行查询耗时:

优化思路二:该方案适用于主键自增的表,可以把Limit 查询转换成某个位置的查询 。

示例:

 explain select * from tb_sku where id > 1000000 limit 10 ;

执行查询耗时:

精品推荐


GPT-4 Plus账号大大大降价了!
免费AI写作工具!

发布者:admin,如若转载,请注明出处:https://ai1024.vip/43238.html

QR code
//