OR条件付きのルックアップテーブル(15万以上の行)に巨大なテーブル(1,000万以上の行)を参加させる必要があります。ような何か:table1にNULL
としてc
またはd
を持つことができる、と私は残りの部分を残して、利用できる方に参加したいのでORシフト付きの効率的なJOIN節
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;
はこれがあります。クエリプランには、Nested Loopがあると言います。これはOR
の条件のためです。この問題を解決するきれいで効率的な方法はありますか?私はRedshiftを使用しています。
編集:これをUNION
で実行しようとしていますが、以前より速くはないようです。
クエリプランを共有できますか? – greginvm
重複が問題にならない場合は、 'union all'を使用することをお勧めします。 – systemjack