O
/*+DRIVING_SITE(rd)*/
dica não funciona com MERGE porque a operação deve ser executada no banco de dados onde a tabela mesclada está. Que neste caso é o banco de dados local. Isso significa todo o conjunto de resultados da tabela remota é puxado pelo link do banco de dados e, em seguida, filtrado em relação aos dados da tabela local. Então, descarte a dica. Também sugiro que você converta a cláusula IN em uma junção:
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)
)
Lembre-se de que as respostas às perguntas de ajuste de desempenho sem detalhes suficientes são apenas suposições .