MySQL大数据量分页查询方法及其优化

MySQL大数据量分页查询方法及其优化,第1张

MySQL大数据量分页查询方法及其优化

1、未优化

select * from product limit 10, 20   0.016秒
select * from product limit 100, 20   0.016秒
select * from product limit 1000, 20   0.047秒
select * from product limit 10000, 20   0.094秒
//我们已经看出随着起始记录的增加,时间也随着增大, 这说明分页语句limit跟起始页码是有很大关系的,那么我们把起始记录改为40w看下(也就是记录的一般左右)                                    

select * from product limit 400000, 20   3.229秒
//再看我们取最后一页记录的时间
select * from product limit 866613, 20   37.44秒

//像这种分页最大的页码页显然这种时间是无法忍受的。

2、优化

//这次我们之间查询最后一页的数据(利用覆盖索引,只包含id列),如下:
select id from product limit 866613, 20 0.2秒
//相对于查询了所有列的37.44秒,提升了大概100多倍的速度

//那么如果我们也要查询所有列,有两种方法,
//一种是id>=的形式,
//另一种就是利用join,看下实际情况:

SELECt * FROM product WHERe ID > =(select id from product limit 866613, 1) limit 20
//查询时间为0.2秒!

//另一种写法
SELECt * FROM product a JOIN (select id from product limit 866613, 20) b ON a.ID = b.id
//查询时间也很短!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5690191.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存