27. februar 2006 - 09:55Der er
10 kommentarer og 1 løsning
Forespørgsel ufattelig langsom
Systemet er lavet som en frontend i Microsoft Access, med en ditto backend. Nu er jeg så ved at portere til SQL Server tabeller, men er løbet ind i et performance problem.
Følgende stump kode tager forever and ever at køre når der er linket til SQL Server tabeller (1 min. 18 sek. pr. gennemløb) mens det kun tager ca. 1-2 sek. når der er tale om tabeller linket fra en Access database. Hvorfor? Jeg HAR prøvet at re-linke SQL Server tabellerne, det hjælper ikke.
Set målerrst = dbs.OpenRecordset("Målere") Set rst = dbs.OpenRecordset("SELECT * FROM Aflæsninger ORDER BY Måler,Dato,Klokkeslæt") Set nyrst = dbs.OpenRecordset("Seneste aflæsninger") målerrst.MoveFirst While Not målerrst.EOF rst.FindLast "måler='" & målerrst!Måler & "'" 'Bla Bla Wend
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.
Når der er tale om SQL Server tabellerne, ser koden sådan her ud:
Set målerrst = dbs.OpenRecordset("Målere", dbOpenDynaset, dbSeeChanges) Set rst = dbs.OpenRecordset("SELECT * FROM Aflæsninger ORDER BY Måler,Dato,Klokkeslæt", dbOpenDynaset, dbSeeChanges) Set nyrst = dbs.OpenRecordset("Seneste aflæsninger", dbOpenDynaset, dbSeeChanges) ålerrst.MoveFirst While Not målerrst.EOF rst.FindLast "måler='" & målerrst!Måler & "'" 'Bla Bla Wend
Ovenstående bruges til en rapport, som tager ca. 9 sek. at generere når der er tale om Access tabellerne, tør ikke engang TÆNKE på hvor lang tid det vil tage med SQL Server tabellerne! :(
Hmmm...DAO (der er i hvert fald ingen reference til Microsoft ActiveX Data Objects i References)
Et lidt andet spørgsmål, dog i samme program...følgende fungerer fint med Access som Backend, men ikke med SQL Server ditto:
rst.FindFirst ("Not IsNull(Tæller)") If Not rst.NoMatch Then TællerStart = rst!Tæller rst.FindLast ("Not IsNull(Tæller)") If Not rst.NoMatch Then TællerSlut = rst!Tæller
Hvis der ikke er nogen poster i rst, kører "Access versionen" bare videre, mens "SQL Server versionen" kommer med en fejl: Der er ingen aktuel post.
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.