Ja, Fullscan ist ein gutes Stichwort.
Mit Deinen Mengenangaben habe ich mal probiert.
8000 Adressen und ca 2 Mio dazu passende Belege ergibt ca 15 Sekunden für ein Update mit Fullscans. Das ist aber unter Postgres und ohne Indizierung (wg Fullscan eh egal). (Wenn es keine Varchar Felder sind sondern Integer, ist es deutlich schneller, hatte ich erst nicht drauf geachtet)
Ob es nun mit >,<,= '' oder anders ist, macht plus/minus 1 Sekunde. Die Exaktheit der Summen ist ein Thema für sich, denke ich. Die
DB ist natürlich nicht 3GB groß, da sie nur diese Daten enthält. Auch das ist dann aber bei einem Fullscan wahrscheinlich ein Thema.
Da es generierte Daten sind, sind sie kontinuierlich und natürlich passend generiert. In der Realität sicher anders und langsamer. Dafür auf einem alten Laptop..
Sind das realistische Werte? Dann kann man ja mal auf Firebird umsteigen.
Was die Richtigkeit der Summen angeht: Hast Du mal erhoben, welche ID wie belegt sind? Werden ja nach Ausprägung des Update vielleicht Werte doppelt summiert?
select kdnr, adr from belege where kdnr = adr;
select kdnr, adr from belege where kdnr = '' and adr ='';
select kdnr, adr from belege where kdnr != adr and adr is not null and adr !='';
usw.