Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Optimierung beim Zusammenführen von Oracle Datalink

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 .