今天说一下 Mysql REGEXP生产事故

今天是公司发布程序版本的时间,本来很期待的心情。 被自己的

"大意失荆州"    的工作态度导致出现生产事故 ,请大家们牢记

是这样的:生产上有300万条数据 

通过mysql  去进行一个查询 导致没有加关键索引列导致 查数据 88秒 而且 数量并不大 是根据家庭查询指定的数据 导致由于当前数有几种不同的分类 我是用到了  REGEXP 

REGEXP 

这个 正则  主要是 针对多数据查询的 。类似like  但是它风险高在索引完全是不走的。 如果你要使用这个 。一定一定要根据其他索引关键字段 同时使用。否则  你就会看到和我一样的痛苦。 疯狂的跟老板解释。 我TM 真是昨晚没睡好 大意啊!!!!!!!!!  

好了 不开玩笑了。   

其实REGEXP 在多数据下 应该严谨使用的。 特别是大数据情况下使用这个东西非常致命。 尤其是全表扫描的时候没有去针对性的解决。 在测试环境中没有发现当前问题 查询88秒 。

注意: 因为测试环境数据量是比较小的 。  使用这个 完全影响不大。  

450W的 数据量   


select  * from  syn6  WHERE cno REGEXP  '110104324310966|113420105587|0014320012883|6110013421239|863241007048|324006021027048' group by cno  and code ='110096'  group by cno


vs 


select  * from  syn6  WHERE cno REGEXP  
-- 这个地方使用的是foreach 遍历就可以做到 用|分割 就达到当前效果 
'110104324310966|113420105587|0014320012883|6110013421239|863241007048|324006021027048' group by cno  ---主要上边 对比缺少and code =''内容---- group by cno  

看似这两条数据差别根本性不大。 但是索引的重要性是占有99%时间  

 

vs

 索引列cno  起到了  关键字段 。  一个 88秒  一个  0.187 秒  活生生的 在生产中遇到的低级错误。 大家看到肯定有工作经历的很多共鸣。 一时开发一时爽。 直到生产OMG ~~~~~~~~~

今天我熬夜加班处理生产事故。  以后遇到各种奇葩问题 跟各位分享。 

最后大家在学习过程中一定要好好用功!!!!!!!!不要是那种懒出境界的懒!

多动手优化mysql 索引  多使用 Explan  特别是工作的小伙伴 更要谨慎

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值