我嘗試使用PL/SQLSQL - 左外連接,減去,INTERSECTION速度比較
實現SCD的Type1這是我的源表
SRC
ID NAME PIN
101 ABC 250001
503 KLM 260001
981 PQR 260001
207 AKN 560
這是我的目標表
TRGT
ID NAME PIN
101 ABC 25001
981 PQR 26789
如果我使用LEFT OUTER JOIN
select TRGT.ID AS TRID,
SRC.ID AS SRID
from SRC
left join TRGT on TRGT.ID = SRC.ID;
我會得到這個。
輸出
TRID SRID
101 101
NULL 503
981 981
NULL 207
沒有太多重要的只是FYI
在SCD型1
- 我需要插入所有這些都有相應的NULL TRID的SRID,因爲他們是新記錄並且不存在於TRID中。
- 我需要更新TRID中存在相應記錄的所有SRID,因爲它們是需要更新的舊記錄。
FYI結束
我已經寫了一些邏輯和插入503207和更新101981。
來到減號和相交運算符。
要提取503207(插入),我可以使用
SELECT ID FROM SRC
MINUS
SELECT ID FROM TRGT
要提取101981(用於更新)我可以使用
SELECT ID FROM SRC
INTERSECT
SELECT ID FROM TRGT.
現在的問題
對我來說當我使用MINUS
,INTERSECT
時,與相比,實施整個SCD類型1很容易左外連接。
但哪個會更快,效率更高?
因爲我打算處理SRC中的大量記錄和TRGT中的小記錄 - 處於初始級別。 但在後期階段,這將是其他方式。
感謝您的意見。對於冗長的問題抱歉,我盡力解釋我的思想狀態。
替換爲甲骨文'plsql'標籤,因爲這是普通的SQL,沒有PL/SQL參與 – 2014-09-05 07:37:00