/*+DRIVING_SITE(rd)*/
hint virker ikke med MERGE, fordi operationen skal køre i databasen, hvor den flettede tabel sidder. Hvilket i dette tilfælde er den lokale database. Det betyder hele resultatsættet fra den eksterne tabel trækkes hen over databaselinket og filtreres derefter mod dataene fra den lokale tabel.
Så kasser tippet. Jeg foreslår også, at du konverterer IN-klausulen til en 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)
)
Husk, at svar på spørgsmål om præstationsjustering uden tilstrækkelige detaljer er bare gæt .