定义:
当操作符与不同类型的操作数一起使用时,会发生类型转换以使操作数兼容。则会发生转换隐式
举一个常见例子:
1、我们先创建一个表,有关手机号查询
create table user(
id int(11) not null primary key auto_increment,
phone varchar(30) null comment "phone" );
#手机号创建索引
alter table user add index idx_phone(phone);
2、我们去通过手机号索引查询
explain select * from t_base_user where phone=13510211254;
结果:我们发现这个查询是全表扫描,而没走索引
3、正确的姿势(走索引),如下
explain select * from t_base_user where phone='13510211254';
结论:我们细心会发现其实就是两个都是查询电话,一个是数字,一个有单引号字符串,这就是原因所在了。错误走全表扫描,mysql数据库把phone字段全部先转换为数字再去找13510211254对比,所以才导致索引失效。这很容易导致线上出现慢查询的问题,小心为妙。
参考: