Oracle
 sql >> Base de données >  >> RDS >> Oracle

Optimisation lors de la fusion à partir de la liaison de données Oracle

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 .