Oracle
 sql >> Database >  >> RDS >> Oracle

Ottimizzazione durante l'unione da Oracle datalink

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 .