我正在處理兩個包含120,000,000條記錄的SQL表。很少有記錄(大約60,000)在兩張表格中重複。兩張桌子的結構都一樣。UNION與FULL OUTER JOIN的執行細節
每個表格有40列。我需要將記錄合併到一個表中。
我知道兩種方法來做到這一點(兩者都給我所需的輸出)。我想知道哪些方法更好,請問有更好的方法嗎?
方法1:
SELECT * INTO Table1_copy FROM Table1
DROP TABLE Table1
SELECT * INTO Table1 FROM Table1_copy
UNION
SELECT * FROM Table2
DROP TABLE Table1_copy
方法2:
INSERT INTO Table1 <br>
SELECT Table2.Col1, Table2.Col2 <br>
FROM TAB1 <br>
FULL OUTER JOIN Table2 <br>
ON Table1.Col1 = Table2.Col1 AND Table1.Col2 = Table2.Col2 <br>
WHERE Table1.Col1 IS NULL AND Table1.Col2 IS NULL
的UNION
使用似乎是一個更好的選擇,但任何人都能夠解決各地有選擇大型數據集到空間問題一張新桌子並放下它。120,000,000條記錄只是一個例子。還有其他表的記錄數量較多。
可能使用[使用聯盟或聯盟 - 更快的重複](http://stackoverflow.com/questions/2309936/use-a-union-or-a-join-what-is-faster) – SaggingRufus
UNION ALL可能比UNION更快。 – jarlh
我不確定爲什麼你想在'LEFT JOIN'做你所需要的時候使用'FULL OUTER JOIN'。另外,不需要檢查Col1和Col2是否都是NULL。 NULL值不等於NULL,因此如果Col1爲NULL,則Table1不能等於Table2。只需使用'WHERE Table1.Col1 IS NULL' –