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

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

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

例子:

1.联表索引失效

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

 2.条件查询索引失效

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

 

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

你会发现是不走索引的

 

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

 总结:

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

猜你喜欢

转载自blog.csdn.net/weixin_42736075/article/details/120196522