簡體   English   中英

Oracle Merge vs Select然后選擇Insert或Update

[英]Oracle Merge vs Select then Insert or Update

什么更快?

合並聲明

    MERGE INTO table_name 
     USING dual
     ON (row_id = 'some_id')
    WHEN MATCHED THEN
     UPDATE SET col_name = 'some_val'
    WHEN NOT MATCHED THEN
     INSERT (row_id, col_name)
     VALUES ('some_id', 'some_val')

要么

查詢select語句然后使用update或insert語句。

    SELECT * FROM table_name where row_id = 'some_id'

如果rowCount == 0

    INSERT INTO table_name (row_id,col_name) VALUES ('some_id','some_val')

其他

    UPDATE table_name SET col_name='some_val' WHERE row_id='some_id'

經驗法則是,如果你可以在一個SQL中完成它,它通常比在多個SQL語句中執行它更好。

如果它能完成工作,我會選擇MERGE。

另外 - 另一個建議:你可以避免在你的陳述中重復數據,例如:

MERGE INTO table
 USING (SELECT 'some_id' AS newid,
               'some_val' AS newval
        FROM dual)
 ON (rowid = newid)
WHEN MATCHED THEN
 UPDATE SET colname = newval
WHEN NOT MATCHED THEN
 INSERT (rowid, colname)
 VALUES (newid, newval)

照顧合並。 它可以使用HASH JOIN消耗大量的區域TEMP 使用提示FIRST_ROWS測試他或使用UPDATE視圖連接加INSERTNOT EXISTS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM