【发布时间】:2017-04-26 19:49:18
【问题描述】:
我需要使用 OR 条件将一个巨大的表(超过 1000 万行)连接到一个查找表(超过 15k 行)。比如:
SELECT t1.a, t1.b, nvl(t1.c, t2.c), nvl(t1.d, t2.d)
FROM table1 t1
JOIN table2 t2 ON t1.c = t2.c OR t1.d = t2.d;
这是因为 table1 可以有 c 或 d 作为NULL,我想加入任何可用的,而忽略其余的。查询计划说有一个嵌套循环,我意识到这是因为OR 条件。有没有一种干净、有效的方法来解决这个问题?我正在使用 Redshift。
编辑:我正在尝试使用 UNION 运行它,但它似乎没有比以前更快。
【问题讨论】:
-
可以分享一下查询计划吗?
-
确保在不存在重复问题的情况下使用
union all,因为它更快。
标签: join inner-join union nested-loops amazon-redshift