El /*+DRIVING_SITE(rd)*/
La sugerencia no funciona con MERGE porque la operación debe ejecutarse en la base de datos donde se encuentra la tabla fusionada. Que en este caso es la base de datos local. Eso significa todo el conjunto de resultados de la tabla remota se extrae a través del enlace de la base de datos y luego se filtra contra los datos de la tabla local.
Así que descarta la indirecta. También te sugiero que conviertas la cláusula IN en una unión:
Merge into project p
using (select rp.projectID,
rp.otherdata
FROM Project ld
inner join [email protected] rd
on rd.projectID = ld.projectID
where ld.LastUpdated < (sysdate - 6/24)) q
-- This select in the in clause one returns 10 rows. Its a test database.
On (q.projectID = p.projectID)
)
Tenga en cuenta que las respuestas a las preguntas de ajuste de rendimiento sin suficiente detalle son solo conjeturas. .