MySQL漏加索引

  犯了傻逼的错误,感觉自己真该!

  NOT IN优化成NOT EXISTS后性能提升了10%,部署新服务器数据量积累到一定数量后发现总有问题:80w数据量的大表(cookie_clean_t)关联不到1w数据量的临时表(cookie_short_run_t)提供的接口很大一部分请求打印的耗时达到4s甚至5s以上,请求设置的3s超时很被动了!当时第一反应也是查看索引,看了几遍都确认索引创建正常,最后百度需求解决方案优化NOT EXISTS,当时找到的是LEFT JOIN设计,最后测试发现性能更差。

二次优化的SQL语句如下:

EXPLAIN
SELECT * FROM cookie_clean_t cc
LEFT JOIN cookie_short_run_t csr ON cc.uuid=csr.uuid
WHERE cc.state=0 AND csr.uuid IS NULL
ORDER BY cc.uuid DESC LIMIT 50

EXPLAIN
SELECT * FROM cookie_clean_t cc
WHERE NOT EXISTS(SELECT csr.uuid FROM cookie_short_run_t csr WHERE csr.uuid=cc.uuid)
AND cc.state=0
ORDER BY cc.uuid DESC LIMIT 50

由于表关联处理的业务逻辑比较多,当时还考虑到临时表批量更新大表状态影响了优化的SQL语句,排除了所有可能,最后再次确认索引发现cookie_short_run_t的字段uuid没有创建索引,加上后性能提升55%。

又是为自己的大意买单,猪脑袋真活该!

转载于:https://www.cnblogs.com/xx0829/p/11571673.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值