您的位置:首页 > 数据库 > MySQL

Mysql索引失效之隐式转换

2017-12-13 12:37 169 查看
原文链接:https://my.oschina.net/u/2313177/blog/1589148

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

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

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

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

查了下mysql相关的资料,介绍如下:

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

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

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

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

转载于:https://my.oschina.net/u/2313177/blog/1589148

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: