On 03-03-2010 07:57, Leif Neland wrote:
> I noget "arvet" kode for at tilføje records til en tabel, så jeg dette, der
> umiddelbart ser pænt ud.
>
> Set Rs = server.createObject("ADODB.RecordSet")
> Rs.CursorLocation = adUseClient
> Rs.open "tabel", Record, adOpenStatic, adLockOptimistic
> Rs.addNew
> Rs("feltnavn1") = variabel1
> Rs("feltnavn2") = variabel2
> ..... osv for de øvrige felter
> Rs.Update
> Rs.close
>
> Men, det tager 6 sekunder at tilføje en record i en tabel med 50.000
> records.
> (Målt med "timer" før og efter open)
> Eksperimenter med forskellige lock- og cursor-typer og indexer gør ingen
> nævneværdig forskel.
>
> Det viser sig, at det er
> Rs.open "tabel"
> der er synderen.
> Rs.open "tabel" er i virkeligheden et synonym for rs.open "select * from
> tabel"; man får et objekt med hele tabellen i, man kan bladre i. Det er jo
> spild, når alt man ønsker er at tilføje.
> Så istedet brugte jeg
> Rs.open "select * from tabel where 0=1",...
> timer gav tidsforbruget til 0, men det er med en opløsning på 1/64 sekunder.
> Jeg kunne have loopet et par 1000 gange for at få en bedre tid, men mindre
> end 0.0156 sek er godt nok til mig
>
> Er rs.open "select * from tabel where 0=1" en elegant nok løsning, eller er
> der bedre?
Hvorfor ikke bare fyre en god gammeldags INSERT af direkte ?
Arne