Le /*+DRIVING_SITE(rd)*/
hint ne fonctionne pas avec MERGE car l'opération doit s'exécuter dans la base de données où se trouve la table fusionnée. Qui dans ce cas est la base de données locale. Cela signifie l'ensemble des résultats de la table distante est extraite via le lien de la base de données, puis filtrée par rapport aux données de la table locale.
Alors, jetez l'indice. Je vous suggère également de convertir la clause IN en jointure :
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)
)
Veuillez garder à l'esprit que les réponses aux questions de réglage des performances qui ne sont pas suffisamment détaillées ne sont que des suppositions .