Foxtable(狐表)用户栏目专家坐堂 → 大小表inner join的where条件效率问题


  共有3223人关注过本帖树形打印复制链接

主题:大小表inner join的where条件效率问题

帅哥哟,离线,有人找我吗?
happyft
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
大小表inner join的where条件效率问题  发帖心情 Post By:2014/10/23 17:29:00 [只看该作者]

要从两个表中查询加载数据,大表有几十万条记录,小表仅1000条记录。
大小表都有单号,和Name两列,小表此两列的值就是大表中的部份值。

实际就是想加载大表的数据但用小表中的数据来做为条件是否能提高效率?

select * form 大表 a inner join 小表 b on a.单号 = b.单号 where a.Name = 'A'

select * form 大表 a inner join 小表 b on a.单号 = b.单号 where b.Name = 'A'

上述两条语句第二条是否效率比第一条高很多?

谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/23 17:58:00 [只看该作者]

 1、where是在inner join之后,也就是两种表生成以后,再排除不满足条件的值;

 

 2、a.Name 和 b.Name性质不同,因为两者的值肯定是不一样的。


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2014/10/23 18:08:00 [只看该作者]

就是因为大表a中有很多name = A的值,同时小表b中也有Name=A的值,两表通过相同的单号列内联上了,所以我才想用b.name = A取代 a.name = A


实际上我只是要加载大表a的符合条件的数据。如果查询中同时也加入了b.name如下:


select a.*,b.name form 大表 a inner join 小表 b on a.单号 = b.单号 where a.Name = 'A'

select a.*,b.name form 大表 a inner join 小表 b on a.单号 = b.单号 where b.Name = 'A'


这样的话是否下面一句速度更快?


 回到顶部
帅哥哟,离线,有人找我吗?
yinyb36
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:953 积分:7252 威望:0 精华:0 注册:2011/9/6 13:36:00
  发帖心情 Post By:2014/10/23 18:53:00 [只看该作者]

搞那么复杂干啥?

select * form 大表 a where Name = 'A'

这样不好吗?



 回到顶部
帅哥哟,离线,有人找我吗?
yinyb36
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:953 积分:7252 威望:0 精华:0 注册:2011/9/6 13:36:00
  发帖心情 Post By:2014/10/23 18:54:00 [只看该作者]

又不用从小表中取值

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2014/10/23 20:56:00 [只看该作者]

因为加载的权限设置在小表中,用它与大表内联筛选出大表中需要的数据加载,主要是on过滤后的数据还要进一步的筛选,纠结where后的字段到底要取哪个表中的比较快,后来测试了下,感觉差不多,但是执行计划显示的却不一样。


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/23 20:58:00 [只看该作者]

 那两句代码执行效率是差不多的,但是最后得到的结果是不一样的,条件不同。
[此贴子已经被作者于2014-10-23 20:58:22编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2014/10/23 21:07:00 [只看该作者]

明白了,谢谢!


 回到顶部