[英]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
視圖連接加INSERT
和NOT EXISTS
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.