What is faster?
the Merge statement
MERGE INTO table_name
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 * FROM table_name where row_id = 'some_id'
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'
The rule of thumb is, if you can do it in one SQL, it'll generally perform better than doing it in multiple SQL statements.
I'd go with the MERGE if it does the job.
Also - another suggestion: you can avoid repeating data in your statement, e.g.:
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)