Mysql索引失效之隐式转换

SkuId` varchar(32) NOT NULL COMMENT 'SkuId',mysql

  `SkuId` bigint(32) NOT NULL COMMENT 'SkuId',sql

根据以上现象咱们能够看出当数据库字段为int类型的时候,入参类型不管是字符串仍是int,都可以命中索引;数据库

                         当数据库字段类型为varchar类型的时候,入参类型必须为varchar类型,才可以命中索引;索引

查了下mysql相关的资料,介绍以下:字符串

mysql在比较值的时候,若是两边值的类型不匹配,那么就会进行隐式类型转换(转化成浮点类型);im

总结以下:            当等式两边类型不一致的时候,都会被转换为浮点数再进行比较。总结

                             当等式左边varchar类型转化成浮点类型的时候,不会命中索引;数据

                             当等式左边是浮点类型的时候,右边类型转化不转化都可以命中索引;img

相关文章
相关标签/搜索