Quy tắc ngón tay cái là, nếu bạn có thể làm điều đó trong một SQL, nó thường hoạt động tốt hơn so với thực hiện trong nhiều câu lệnh SQL.
Tôi sẽ sử dụng MERGE nếu nó hoạt động tốt.
Ngoài ra - một gợi ý khác:bạn có thể tránh lặp lại dữ liệu trong bảng sao kê của mình, ví dụ:
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)