Major performance gains will be achieved by tuning the source-target join (for example, using indexes, hints, partitioning etc) or by tuning the USING clause if it is a complex in-line view.
In addition, we can achieve some minor gains by ordering the WHEN clauses in a MERGE according to which event is the most likely (i.e.
That is not possible--you need to instead change the definition of the view.
This article introduces the new MERGE SQL command (sometimes referred to as "UPSERT").
CREATE OR REPLACE VIEW Film Details View (Film_Name, Actor_Full Name, Hall_Number, Date_Time) AS SELECT flm.film_name, actor.actor_name || ' ' || actor.actor_surname, hall.cinemahall_number, schedule.schedule_date FROM film flm JOIN movieschedule schedule ON (flm.film_id = schedule.schedule_filmid) JOIN cinemahall hall ON (schedule.schedule_hallid = hall.cinemahall_id) JOIN Film Actor filmactor ON (flm.film_id = filmactor.filmactor_filmid) JOIN Actor actor ON (actor.actor_id = filmactor.filmactor_actorid); Error starting at line 312 in command: UPDATE FILMDETAILSVIEW SET ACTOR_FULLNAME = 'a' WHERE HALL_NUMBER = 1 Error at Command Line:313 Column:4 Error report: SQL Error: ORA-01733: virtual column not allowed here 01733.