美文网首页MySQL优化
MySQL字段类型不同造成的隐式转换,导致索引失效

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

作者: Real_man | 来源:发表于2019-01-23 09:23 被阅读16次

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

早上报慢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

相关文章

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

    这里只是一个提醒,之前这个概念记的挺熟的,但是真到写代码的时候还是出现了这个问题。 早上报慢SQL查询报警,然后看...

  • mysql 查询优化记录

    索引失效 隐式类型转换:表字段类型为 varchar , 查询条件为 int 型。以 menu_order 为例 ...

  • Mysql常见索引失效情况

    1.被索引字段发生隐式转换 Mysql执行器在执行sql查询的时候,会自动将与原字段类型不匹配的值进行类型转换 我...

  • Oracle 数据库突发的性能问题

    一个比较经典的案例,隐式类型转换发生在字段上,会造成索引无法使用的严重性能问题; 隐式类型转换发生在绑定变量上,会...

  • 索引失效的几种原因

    1.隐式类型转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为var...

  • MySQL的隐式转换

    MySQL在什么情况下会产生隐式转换 当查询条件左右两侧类型不匹配的时候会发生隐式转换,可能导致查询无法使用索引。...

  • 数据库篇

    1、mysql索引在什么情况下回失效1、查询条件包括or可能导致索引失效2、查询时字段类型是字符串,where时参...

  • 常见的索引失效情形

    隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar...

  • MySQL中索引失效的情况

    1.被索引字段发生了隐式类型转换 2.被索引字段使用了表达式计算 3.被索引字段使用了函数 4.被索引字段,不是联...

  • MySQL中的隐式转换造成的索引失效

    本次测试使用的 MySQL 版本是 5.7.26,随着 MySQL 版本的更新某些特性可能会发生改变,本文不代表所...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/nhzdjqtx.html