测试环境:1.1亿数据,约22GB大小,6核12线程32GBmysql8,ssd硬盘
表为常见的订单表,表中26个字段。
网上传说limit不同的使用方式对性能影响很大,自己也有点好奇,于是直接做个测试。
下面直接展示mysql在进行分页limit查询时,不同数据量对性能的影响:
# 0.021s 很快
select * from cp_orders limit 100
# 0.1s 其实也算很快,也还能接受
# 值得一提的是,这里是1000页了
select * from cp_orders limit 100000,100
# 1.2s 这里算是警戒值,准确的说这里都算是慢sql了
# 值得一提的是,这里是10000页了
select * from cp_orders limit 1000000,100
# 4.4s 这里完全不能接受了
# 值得一提的是,这里是50000页了
select * from cp_orders limit 5000000,100
# 0.026s
# 上面的sql优化方案,记录上一页最后的id值,这里依然是取第50000页
select * from cp_orders where code > 5022489 limit 100
总结:正常情况下,limit直接写进sql即可,做优化不如直接限制最大显示1000页;上面的结果也说明了在1000页内返回也就是0.1s,完全可以接受