起因
这个一个填坑的时代,公司业务比较多,因业务发展需要,业务技术部门将系统的用户id由原来的int类型改成varchar类型,然后我负责的项目要依托于业务的用户id,所以我库里的用户id也相应的由int类型变更成varchar类型,但是,由于一时疏忽,我库里的表之前的开发人员设计的时候,把部分表字符集指定成utf8,而另一些表的字符集指定成utf8mb4,最后我在变更字段类型的时候,没统一字段的字符集,最终导致几张互相关联的百万级的的数据库表查询异常慢,甚至查询不出最终结果。
处理结果
统一字符集后,关联的sql重新利用了索引,迅速的响应了查询结果。
总结
关联字段字符集不一样会导致表关联时做隐式转换,无法用到关联字段上的索引。