Witzig, gestern wurde eine sehr ähnliche Frage
bei Stackoverflow gestellt. Die Antwort von dort gilt auch hier:
Finde raus, wie ein "Multiupdate- Statement" in Deinem Ziel- Datenbanksystem bzw. mit Deinem verwendeten ODBC- Treiber aussehen muss und formatiere ein solches Statement. Dann kannst Du auch BULK- Operationen durchführen. Das könnte schneller sein, aber wissen wirst Du es erst, wenn Du es ausprobiert hast.
Das interessante an der Aufgabe: Ein "GetItemValue" ist schon an sich ein recht "teurer" Vorgang, was die Zeit angeht (bis zu 1/1000 Sekunde pro Vorgang), und auch eine String- Concatenation um den letztendlichen Query- String zusammenzubauen ist ähnlich "teuer". Das heisst: Selbst wenn Du nur ein Feld ausliest und eine Concatenation pro Dokument machst, bist Du vermutlich schon bei einer Laufzeit zwischen 30 und 60 Sekunden, ohne dass Du auch nur eine einzige Datenbank- Operation durchgeführt hast. Wenn Du dann noch die DC "suboptimal" baust (GetNthDocument statt GetNextDocument), dann dauert nur das durchlaufen der Schleife, ohne auch nur eine einzige Operation, mehrere Minuten...
Um also wirklich zu messen, welche Variante schneller ist, musst Du wirklich alles messen...