mysql 隐式类型转换的问题

2018-10-19 18:08:03 +08:00
 cc959798

比如一个表 tb 的字段是这 tid 是字符串类型 我们 select * from tb where id='123'走索引 select * from tb where id=123 不走走索引

隐式转化率就不走索引了,为什么隐式转换的了就不走索引了,和索引的结构有关吗

但是假设这个 tid 是 int 类型的话

无论上面的两种写法都会走索引的,这是为什么

2370 次点击
所在节点    MySQL
1 条回复
Ashitaka4
2018-10-19 19:15:35 +08:00
1、如果比较的类型不一致 id=123 ,mysql 会把 id 的值和 123 转换成浮点型, 涉及到 varchar 值转为浮点的多种情况,会存在可能很多记录转换为同一个值的情况,不会用到索引。
2、int 类型,转换也都会转换成浮点,int 类型转换到 float 是唯一
3、转换的过程就叫这个过程就叫隐形转换。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/499240

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX