sql >> Database >  >> RDS >> Oracle

Optimalisatie bij samenvoegen vanuit Oracle datalink

De /*+DRIVING_SITE(rd)*/ hint werkt niet met MERGE omdat de bewerking moet worden uitgevoerd in de database waar de samengevoegde tabel zich bevindt. Dat is in dit geval de lokale database. Dat betekent de hele resultatenset uit de externe tabel wordt over de databaselink getrokken en vervolgens gefilterd tegen de gegevens uit de lokale tabel.

Dus negeer de hint. Ik raad je ook aan om de IN-clausule om te zetten in een 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)
    )

Houd er rekening mee dat antwoorden op vragen over prestatieafstemming zonder voldoende details slechts gissingen zijn .



  1. Rails postgresql hoe het transactie-isolatieniveau in te stellen op serializable

  2. SQL-query:geordende rijen ophalen uit een tabel

  3. Een kolom toevoegen aan een bestaande tabel in SQLite

  4. Robolectric toegang tot database genereert een fout