Mysql数据类型导致的索引失效

记录自己在工作中发现的索引失效比较隐蔽的情况。

当我们设计表结构的使用,需要先预设后面需要频繁查询的数据的索引,其中还有一个重要的索引优化,表面看好像对索引没影响,就是设计表的字段的类型的时候,当查询的时候字段的类型不匹配的时候,索引是失效的。

例子:

1.联表索引失效

如果连表的两张表的字段数据类型不一样,例如一个为int,一个为varchar,这个时候即时建立了索引也是失效的。如果两个都是varchar为什么还会失效呢,这个时候你一定要保证它们的字符是一样的类型,如图

 2.条件查询索引失效

如果你查询的是一个日期的字符串,例如:

 

 这个时候你使用的是select * from table where ds  = 20210909

你会发现是不走索引的

 

 如果这个时候换成select * from table,你会发现走索引了 

 总结:

有时候你会发现工作中明明查看表的设计索引是建立的,sql中也找不出索引失效的原因,这个时候你可以从表结构下手看看,毕竟有时候这个表并不是你设计的,联表的表结构也可能是多个人设计的导致数据类型没有一致化,这也可以说是会经常出现的问题。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值