SkuId` varchar(32) NOT NULL COMMENT 'SkuId',
`SkuId` bigint(32) NOT NULL COMMENT 'SkuId',
根据以上现象我们可以看出当数据库字段为int类型的时候,入参类型无论是字符串还是int,都能够命中索引;
当数据库字段类型为varchar类型的时候,入参类型必须为varchar类型,才能够命中索引;
查了下mysql相关的资料,介绍如下:
mysql在比较值的时候,如果两边值的类型不匹配,那么就会进行隐式类型转换(转化成浮点类型);
总结如下: 当等式两边类型不一致的时候,都会被转换为浮点数再进行比较。
当等式左边varchar类型转化成浮点类型的时候,不会命中索引;
当等式左边是浮点类型的时候,右边类型转化不转化都能够命中索引;