gpt4 book ai didi

mysql - sql引擎如何处理不等于的连接查询?

转载 作者:行者123 更新时间:2023-11-29 10:09:10 28 4
gpt4 key购买 nike

如果查询如下,sql 引擎将使用 HashJoin:

select * from table1 t1 left join table2 t2 on t1.id = t2.id;

没关系。但如果查询是这样的:

select * from table1 t1 left join table2 t2 on t1.id > t2.id;

如何处理这个问题?

嵌套循环连接可以工作,但是有更好的方法吗?

最佳答案

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

通常,您有一个相等和不相等连接的组合,如 t1.id = t2.id and t1.cost < t2.cost 。在这种情况下,您可以执行正常的分布式哈希连接,然后保留次要项目的排序列表以执行不相等的部分。这就是 Presto 所做的事情。

关于mysql - sql引擎如何处理不等于的连接查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51328118/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com