mysql in 查询慢的问题

线上某系统遇到了in查询慢的问题,而且in里面的元素只有10个,百思不得其解,接口原来1ms的响应时间,加了这个sql为何变成了200ms,随后破案了。
因为mysql有个系统参数range_eq_range_index_dive_limit,5.6版本默认为10,超过10以后可能导致走错误的执行计划,5.7默认为200,目前已知:
正常情况下我们在使用in查询的时候都会走索引,但是数据库的eq_range_index_dive_limit属性会影响mysql优化器的选择mysql官方没给出具体会受到影响的情况,但是给出了eq_range_index_dive_limit不生效的情况

  1. single-index FORCE INDEX index 唯一索引使用强制索引方式不受eq_range_index_dive_limit影响,否则受影响
  2. The index is nonunique and not a FULLTEXT index.非唯一索引和非全文索引不受eq_range_index_dive_limit影响
  3. No subquery is present. 不存在子查询的情况不受eq_range_index_dive_limit影响
  4. No DISTINCT, GROUP BY, or ORDER BY clause is present. 不存在DISTINCT、GROUP BY或ORDER BY子句不受eq_range_index_dive_limit影响
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值