tumregeln är, om du kan göra det i en SQL, kommer det i allmänhet att fungera bättre än att göra det i flera SQL-satser.
Jag skulle gå med MERGE om det gör jobbet.
Dessutom - ett annat förslag:du kan undvika att upprepa data i ditt uttalande, t.ex.:
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)