开发经验

6个成员

mysql联表查询索引不起作用

发表于 2015-07-29 2335 次查看

今天在核对订单交易流水的时候,需要比对订单的信息与流水的信息,因流水中记录有订单ID,所以想通过联表的方式来查询数据,写完sql后,查看执行计划,坑爹的,竟然很不理想,如果按该sql查询,那基本是不可能把结果查不来的,

但是通过查看表结构,又发现关联的字段都有索引,第二个表的索引怎么就用不着呢,后来通过了解,发现是因为两个字段的类型不一样,表1该字段类型是int,表2该字段类型是VARCHAR,所以在联表的时候,因为类型不一样,所以不使用索引,导致查寻不出结果。

总结,在以后开发项目中需要注意的,有关联的表的相对应字段,类型需要设置为一样,避免该问题的产生,后来又找到另一个方式,mysql 里有一个函数,可以直接类型的转换,CONVERT(),通过对表int类型转换为 char,也可以使用表2的索引。

修改后的执行计划结果:

 

 

1回复
  • 2楼 斌哥 2015-07-30

    感谢分享!正好对我有帮助

发表回复
你还没有登录,请先登录注册
话题作者
头衔:

加入我们吧,一起学习QQ群516033298