一条sql犯下的“血案”

做一个需求的开发,算是个改造吧。

集成测试过程中,在生产想要找之前做过的数据,执行了以下sql。

select t.* from order_service_log t where t.service_code = '产品过户' limit 10

当现场的一个测试头头在群里截图@全体,问谁执行了这个sql时,顿时感觉大事不妙。

想起执行这个sql时,貌似好几分钟都没执行完。

!!!不会是拉垮了整个生产数据库吧!!!

然后就是如此。

单看这个sql,并没有什么问题,感觉对效率没太大影响。

但一旦service_code这个字段不是索引,且这个日志表数量达30万+,这条简单的sql就不是这么简单了。

但归根到底,还是日记表定时需要清数据。

而我们书写查询语句时,也要注意,最好用带有索引的条件去查询,避免用t.*,以及用上时间限制。

还是受职场磋磨地不够多啊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章