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


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

主题:大小表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'

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

谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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'


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


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


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

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


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


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

明白了,谢谢!


 回到顶部