12. september 2002 - 10:43Der er
8 kommentarer og 1 løsning
Batchsize/cache - hjælp til langsom loop
jeg har en besværlig (læs: langsom) sql, det kan ikke laves om den er bare tung.
recordset jeg får ud af det, skal jeg så loope igennem med følgende kode:
(den skriver en linie i en tekstfil for hver 15 rækker i outputRS)
If Not outputRS.EOF Then linenumber = 0 unitnumber = 0 outputRS.MoveFirst selectString = "SELECT UNIT " While Not outputRS.EOF unitnumber = unitnumber + 1 selectString = selectString & "'" & outputRS!Father & "'" If unitnumber > 15 Then Print #2, selectString selectString = "SELECT UNIT PLUS " unitnumber = 0 linenumber = linenumber + 1 End If outputRS.MoveNext If Not outputRS.EOF Then selectString = selectString & ", " End If Wend If unitnumber > 0 Then Print #2, selectString End If outputRS.MoveFirst End If
det kører utrolig langsom, da 'den' indlæser for små bidder af gangen. hvordan forøger jeg størrelsen på de bidder der indlæses?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Der er nogen ting jeg ikke helt forstår, men det skyldes måske jeg ikke helt har forstået koden.
Er der nogen grund til at åbne OutputRS som et recordset? Du læser jo ikke noget fra den. Du kan jo blot tælle hvor mange poster der er i recordsettet og så lave løkken ud fra en tæller.
Et rent gæt herfra: Vil koden ikke afvikles hurtigere, hvis du venter med at skrive til tekstfil, til du har fundet hele tekststrengen? Så skal du kun skrive én gang.
Hermed et forsøg på at tune While sætningen lidt. Da jeg ikke helt kender OutputRS er det ikke sikkert den holder i landsretten, men det er i hvert tilfælde et forsøg på at speede tingene lidt op. Hvis du orker, så lad mig høre hvordan det går.
While Not outputRS.EOF for unitnumber = 1 to 14 selectString = selectString & "'" & outputRS!Father & "'" outputRS.MoveNext selectString = selectString & ", " Next unitnumber selectString = selectString & "'" & outputRS!Father & "'" outputRS.MoveNext If unitnumber > 15 Then Print #2, selectString selectString = "SELECT UNIT PLUS " unitnumber = 0 linenumber = linenumber + 1 end if Wend
point til superjap for at prøve, intet af det virkede, jeg lavede et par mellemtabeller og det hjalp noget på det
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.