在研发过程中难免会遇到相关的sql优化,在工作中我常用的大概有两种优化方式:
- 复杂sql拆分
- 使用索引
但是在一次sql优化过程中,遇到了一种情况:两个关联表中关联字段均有索引,但是其中一个表去关联另外一个失效。正常情况下,无论使用哪个表作为主表,其索引都是有效的。
1、查看对应表中相关索引是书写正确
2、查看表所对应的编码。因创建表时全部统一UTF-8,总体来说表的格式是一致的。
3、查看表所对应索引字段编码。
show full columns from precheck_rk; show full columns from precheck_jy ;
查看发现两个表字段关联字段索引编码不同,难道编码不同也会对索引是否有效有影响吗?
虽然表都是utf-8存储模式,但是其表字段编码不同。
更改前
更改后
优化前查询情况
优化后查询情况