Il /*+DRIVING_SITE(rd)*/
hint non funziona con MERGE perché l'operazione deve essere eseguita nel database in cui si trova la tabella unita. Che in questo caso è il database locale. Ciò significa l'intero set di risultati dalla tabella remota viene eseguito attraverso il collegamento al database e quindi filtrato rispetto ai dati della tabella locale.
Quindi, scarta il suggerimento. Ti suggerisco anche di convertire la clausola IN in un join:
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)
)
Tieni presente che le risposte alle domande sull'ottimizzazione delle prestazioni senza dettagli sufficienti sono solo ipotesi .