比如一个表 tb 的字段是这 tid 是字符串类型 我们 select * from tb where id='123'走索引 select * from tb where id=123 不走走索引
隐式转化率就不走索引了,为什么隐式转换的了就不走索引了,和索引的结构有关吗
但是假设这个 tid 是 int 类型的话
无论上面的两种写法都会走索引的,这是为什么
1
Ashitaka4 2018-10-19 19:15:35 +08:00
1、如果比较的类型不一致 id=123 ,mysql 会把 id 的值和 123 转换成浮点型, 涉及到 varchar 值转为浮点的多种情况,会存在可能很多记录转换为同一个值的情况,不会用到索引。
2、int 类型,转换也都会转换成浮点,int 类型转换到 float 是唯一 3、转换的过程就叫这个过程就叫隐形转换。 |