Der /*+DRIVING_SITE(rd)*/
Hint funktioniert nicht mit MERGE, da die Operation in der Datenbank ausgeführt werden muss, in der sich die zusammengeführte Tabelle befindet. In diesem Fall ist dies die lokale Datenbank. Das bedeutet die gesamte Ergebnismenge aus der entfernten Tabelle wird über die Datenbankverbindung gezogen und dann gegen die Daten aus der lokalen Tabelle gefiltert.
Verwerfen Sie also den Hinweis. Ich schlage auch vor, dass Sie die IN-Klausel in einen Join umwandeln:
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)
)
Bitte beachten Sie, dass Antworten auf Fragen zur Leistungsoptimierung ohne ausreichende Details nur Vermutungen sind .