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:如上诉描述有所错误,请指出,我会立刻改正的。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM