首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql引擎如何处理非相等的联接查询?

sql引擎如何处理非相等的联接查询?
EN

Stack Overflow用户
提问于 2018-07-13 15:07:53
回答 1查看 175关注 0票数 0

如果有这样的查询,sql引擎将使用HashJoin:

从table1 t1中选择*,在t1.id =t2.id上左加入table2 t2;

那就好了。但是,如果查询是这样的:

从table1 t1中选择*,在t1.id >t2.id上左加入table2 t2;

怎么处理这个?

nestedloop连接可以工作,但是还有更好的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-07-13 22:46:21

对于分布式SQL,直接执行非qual (t1.id > t2.id)是非常昂贵的。如果一方较小,则执行广播,然后在每个节点上使用排序索引。如果两边都很大,则可以对分区进行范围划分,并构建排序索引,然后将其他行复制到可能匹配的任何范围。

通常,您有一个组合相等和非相等连接,如t1.id = t2.id and t1.cost < t2.cost。在这种情况下,您可以执行一个普通的分布式散列连接,然后保留一个排序的次要项列表来执行非相等部分。普雷斯托就是这么做的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51328118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档