MySQL 数据量大 分页查询慢调优方案

多张表联合查询,分页时,查询慢解决方案

两张表联合查询,表1数据量7.5万,表2数据量400,联合查询时,当查询尾页的时候,查询时间是第一页的千倍
注意:本方案不考虑排序问题,同时code必须为从0开始的自增值

  1. 最初的做法

    select * from goods as g
    left join goods_class as c on c.class_code = g.class_code 
    limit 0, 10
    
  2. 调整后的方案

    select * from goods as g
    left join goods_class as c on c.class_code = g.class_code 
    -- 这里的0等同于limit额第一个参数
    where  g.code >= 0
    limit 10
    
  3. 知识点分析
    mysql官方文档:[LIMIT {[offset,] row_count | row_count OFFSET offset}]
    官方解释:

    LIMIT取一个或两个数字自变量,自变量必须是非负的整数常数(当使用已预备的语句时除外)–>这里的与预备语句是我们在项目中自定义的属性字段
    使用两个自变量时,第一个自变量指定返回的第一行的偏移量,第二个自变量指定返回的行数的最大值。初始行的偏移量为0(不是1)。


    从官方的解释来看:当第一个省略或者值较小时,找到就返回第二参数的数据量,且不读取后续的数据,如果第一个参数值很大,那么会知道定位到偏移量的位置,才取数据,这样就类似于全表扫描,最终导致数据查询慢
    以上是博主个人理解,仅作参考。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值