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
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.