MySQL优化

MySQL字段类型不同造成的隐式转换,导致索引失效

2019-01-23  本文已影响16人  Real_man

这里只是一个提醒,之前这个概念记的挺熟的,但是真到写代码的时候还是出现了这个问题。

早上报慢SQL查询报警,然后看了看SQL语句(语句被我简化了很多):

SELECT  xxx  FROM t_alipay_xxx  WHERE order_no in (15481284322554)                                              and status in (2,3)

记得order_no是加了索引才对的啊,当时同事提醒这个是因为order_no用的数字,我们的数据库结构order_no用的是varchar类型的,要加上引号('')

SELECT  xxx  FROM t_alipay_xxx  WHERE order_no in ('15481284322554')                                              and status in (2,3)

加上引号之后,果然走了索引, 遇到情况之后印象才更深刻啊。之所以用in,先用stringBuilder连接了字符串,在mybatis中使用$$,没有转义,最后执行的真正SQL都变成了没有引号的。


image.png

另外

image
上一篇 下一篇

猜你喜欢

热点阅读