left join 查询慢

碰到一个 sql


SELECT
    kcd.id,
kcd.importTime,
kcd.phone,
wou.realName workOrderUserName,
IF (os.studentId IS NULL, '否', '是') isSuccess,
FROM_UNIXTIME(os.payTime) payTime
FROM
coaches.kf_customer_db kcd
left   join coaches.User_student us ON kcd.phone = us.phone


发现执行效率 慢的惊人。 kf_customer_db  这张表有3w+的数据,User_student 这张表有30w的数据。查询下来一趟将近100s 以上


但是将 left      join 转为  inner join 后  ,几乎都是秒查 效率在1s以内。

这巨大的差异 ,让我想起来 explain。


执行一下 发现 left join 的 查询计划  


而 inner join 的查询计划



观察 rowd  的值,差距好大。

然后google left join 慢 

参考 

http://luxuryzh.iteye.com/blog/1976004 这篇 博客,发现自己的两个 phone的 字符集编码格式不一样。一个是uft-8,一个是 latin1。


最后将两者改为 latin1。发现问题解决。


执行效率,不到1s。


执行计划如下




由此问题解决。





  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值