mysql隐式转换导致索引失效(失效原因分析)

当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。某些转换是隐式发生的。

 某些隐式转换会导致索引失效。

 

 1. in 参数包含多个类型

2. 判断符合左边是字符串,右边是数字,列如  where a = 123  其中a是字符类型

      左边是数字,右边是字符串,这种隐式转换后索引仍然有效。

     分析:

    根据官方转换规则,  一边数字一边字符串,两边都会转换为浮点数进行比较。

   a: 左边数字,右边字符串情况:  索引有效: 左边作为检索项,数字是唯一确定的,即数字转化为一个浮点数,这个数字是唯一的。

  b:左边字符串,右边数字情况:索引失效:左边作为检索项,转化为浮点数,字符串不唯一确定,列如  ‘10001’,‘10001a’,’10001b’都将转化为浮点数10001

     

3.多表join时,where左右两边的字段的字符集类型不一致。

本文地址:https://blog.csdn.net/qq_34707456/article/details/107179034

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐