MYSQL 多表 LEFT JOIN 关联查询,索引失效导致全表扫描问题及解决方法

目前做商城系统二次重构,遇到原系统遗留订单到出问题,因涉及多表查询操作,原代码设计者对mysql中加了N多的索引,但是查询的时候a表根本没有通过索引关联b表,导致索引失效,检索全表。先放出结论:关联字段类型不一致,导致索引失效。

MYSQL 多表 LEFT JOIN 关联查询,索引失效导致全表扫描问题及解决方法

 

两张表的数据量超过10万条,仅仅查询6000条数据,需要的时间接近4分钟。这对使用者来说,体验极差,更别说是1个月1个季度乃至半年的数据量导出。

MYSQL 多表 LEFT JOIN 关联查询,索引失效导致全表扫描问题及解决方法

MYSQL 多表 LEFT JOIN 关联查询,索引失效导致全表扫描问题及解决方法

 

使用 查看表结构,SHOW  FULL COLUMNS  FROM  'XXX';显示

MYSQL 多表 LEFT JOIN 关联查询,索引失效导致全表扫描问题及解决方法

MYSQL 多表 LEFT JOIN 关联查询,索引失效导致全表扫描问题及解决方法

修改语句

 ALTER TABLE XXX CHANGE out_trade_no out_trade_no VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

两者同一之后查询结果

MYSQL 多表 LEFT JOIN 关联查询,索引失效导致全表扫描问题及解决方法

写在最后,如果能够让你的效率提升1000倍,何不给个赞再走呢。^ - ^ !