一条 sql 语句执行的很慢的原因有哪些?

关于这个问题,确实可以好好写一篇文章讲讲。我觉得这个问题很有思考的价值,因为这个问题将 MySQL 中两个比较重要的知识点都考到了。

这个问题假如是我回答的话,我的脑子会根据这个思维导图来回答:

第一种情况:

执行器更新完数据之后,一般是存储引擎先将这个更新的记录先写 redolog,然后 redolog 满了之后会刷新脏页,将数据写磁盘,这个时候当然没空执行你的 sql 语句了,所以那瞬间会有点慢。

第二种情况:

select * from T where ID=10;

就比如说这条语句,你想找 T表 中 ID=10 的行。但是有可能这个 T表 或者 ID=10 的行被上锁了,那这个时候你当然慢啦。

第三种情况:

优化器会通过采样的方式来判断索引的区分度,从而决定走不走索引。但是在采样的时候,采样到的数据刚好反应不出索引的区分度,导致优化器没走索引,走了全表扫描。那这个情况 sql 语句走全表扫描,肯定慢啦。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值