近日,线上发现一条查询效率很低的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:如上诉描述有所错误,请指出,我会立刻改正的。