mysql 字段类型不一致导致索引失效

近日,线上发现一条查询效率很低的sql(还好只是试运行,不然要凉凉了)

sql也比较简单,就是查询部门,顺便关联了部门的所属行政区划,红色的子查询是这次的查询较慢的原因

使用EXPLAIN 分析sql可以看到,对于md_administrative_region表是进行了全表的扫描(type=all)

刚开始以为是sql的问题(可能也是有问题的 0.0 ),但之后尝试流很多次始终无法使用索引,直到无意间百度到 Mysql中字段类型不一致导致索引无效

看了一下表结构才发现确实一个是varchar一个是bigint, 修改其中的一个后再使用EXPLAIN 分析可以发现

md_administrative_region从type=all变成了type=eq_ref,进行了索引查询,查询的sql效率从7秒变成了0.07秒,真的快了太多

所以特地在此记录一下,希望之后可以留心!

ps:如上诉描述有所错误,请指出,我会立刻改正的。

 

posted @ 2019-03-01 22:52  Grace&Gemin  阅读(2899)  评论(1编辑  收藏  举报