Avatar billede sblar Nybegynder
26. november 2001 - 19:36 Der er 14 kommentarer og
2 løsninger

Access vs. MSSQL performance

Er der nogen der give et par hints hvorfor SQL-server er så meget hurtigere end Access. Jeg har prøvet følgende:
Importeret en Access tabel (ca. 5000 poster) til SQL-server og derefter sammenkædet server-tabellen i en Access front-end over netværk. Adgangen til data i denne sammenkædede tabel var ca. 4 gange hurtigere end adgangen til den samme tabel i Access back-end(også sammenkædet over netværk til den samme fysiske PC som SQL-serveren kører på). Jeg kunne derimod ikke se nogen hastighedsforskel ved at køre henholdvis en Acces forespørgsel mod den sammenkædede server-tabel og en videregivelsesforespørgsel mod direkte til serveren. Jeg bruger SQL serv. 2000 og Acc97.
Avatar billede trivial Nybegynder
26. november 2001 - 19:37 #1
Hvad jeg har fået fortalt er MtSQl bedre, men aner ikke hvorfor......Hehe
Mvh Asger/Trivial
www.Hard-News.subnet.dk
Avatar billede sblar Nybegynder
26. november 2001 - 19:47 #2
Den tror jeg altså ikke du scorer mange point på trivial!
Avatar billede terry Ekspert
26. november 2001 - 19:53 #3
When you link tables in SQL server you use ODBC drivers as opposed Access own JET drivers when youlink to an Access backend. I would think the SQL drivers are faster.
It sound strange that you see no difference in performance between an Access query and a passthrough query. The only explanation is that 5000 records is too few to notice any difference.
Form my experience passthrough queries are MUCH faster than Access, specially on joined tables with many records.

Avatar billede pierrehusted Nybegynder
26. november 2001 - 21:20 #4
At sammenligne Access og SQL Server svarer vel meget hårdt sat op til at sammenligne motoren i en Wartburg med motoren i en Formel-1 vogn. Begge to er forbrændingsmotorer, men på den ene er der lagt ret mange arbejdstimer og materialer i at få den til at køre hurtigt.
Hvis man skal forklare præcis hvad der gør forskellen, så skal man meget dybt ned i tekniske detaljer.

Men noget af hastighedsforskellen bunder helt klart i driverne, og i at selve grundsystemet kan finde dataene frem fra disken hurtigere.


På dit sidste spørgsmål er jeg ikke helt sikker på om jeg har forstået dig ret.
Du har lavet en forespørgsel gennem Access til en sammenkædet tabel, som ligger på en SQL Server.
Så har du lavet den samme forespørgsel direkte til serveren....  er det så gennem Query Analyzer eller hvordan har du lavet den forespørgsel ??
Grunden til at du får den samme hastighed ligger nok i at du faktisk bruger de samme drivere, helt sikkert det samme grundsystem (hvis det er den samme tabel på SQL Serveren du bruger hver gang).
Avatar billede terry Ekspert
27. november 2001 - 08:06 #5
pierrehusted>In Access it is possible to make what is called a pass-through query. This get sent to the server without interferance from Access and the server returns the result. It obviosuly has to be parsed etc. on e ther server but still it should be faster than \"normal\" Access queries.
Avatar billede sblar Nybegynder
27. november 2001 - 08:12 #6
De 2 forespørgsler køres begge i Access. Den ene er en ganske alm. Access frsp. som køres mod den sammenkædede SQL tabel. Den anden er en videregivelsesforespørgsel hvilket vil sige at den gør brug af en forbindelse direkte til SQL serveren. Den kunne i princippet køre uden at der var nogle tabeller i front-end overhovedet. Kan det tænkes at Acceess er så intelligent at den forsøger at køre en alm. frsp. som videregivelse når kilden er en sammenkædet SQL-tabel?
Avatar billede terry Ekspert
27. november 2001 - 08:24 #7
No! The \"videregivelsesforespørgsel\" doesnt use the \"sammenkædet SQL tabel\". The SQL statement in a \"pass-through\" query has to comply to the SQL used on the server and NOT Access. So it wouldnt work if it didnt get sent to the server.
I think you should try increasing th enumber of records from 5000 to 50000 and then maybe with a JOIN ore two then I think you will see the difference!
Avatar billede sblar Nybegynder
27. november 2001 - 09:06 #8
Now I\'m really puzzled! I\'ve increased the number of records to about 80000 and made 2 querys in Acccess with a join to another table. Now I do see a significant performance difference - but, not the way I expected. The query toward the linked tables in Access executes in aprox. 1 sec. and the pass-through toke abaout 40 secs.!?! Both querys contains the same join and the same criteria and returns 20656 records.
What now? I really want to understand this behaviour.
Avatar billede terry Ekspert
27. november 2001 - 09:11 #9
That sounds very strange. If you cut and paste the pass-through query to the query analyzeer in SQL does it still take just as long (40 seconds)?

Are you sure you are using the newest drivers for SQL Server 2000 and not those from 6.5 or 7.0?

Avatar billede sblar Nybegynder
27. november 2001 - 09:15 #10
In query analyzer it takes exactly 50 secs.
I\'m not at all sure that I use the latest drivers, where do I check that?
Avatar billede terry Ekspert
27. november 2001 - 09:21 #11
If you do this in Query analyzer then you dont need the drivers, these are just for Access.

You can see which drivers you are using in the ODBC Data Sources dialog (Control Panel) and then select the drivers TAB.
Avatar billede sblar Nybegynder
27. november 2001 - 09:24 #12
The ODBC drivers for SQL server is version 2000.80.194.00 from 06-08-2000.
Avatar billede terry Ekspert
27. november 2001 - 09:52 #13
It looks as though your drivers are OK!

I find it hard to believe that it takes 50 seconds in SQL Query analyzer and 1 in Access!

But if we come back to your original question, why is SQL Server so much faster than Access! Well I think you have received an answer on that, it should be faster, but in some cases it isnt, why it isnt I can say.

I am using SQL 7.0 and Access 97. I have a rather complex pass-through query which selects from three views each containing at least two tables which results in about 10000 records from each view. The pass-through uses groups and does SUM and AVG calculations. The pass-through FROM access takes about 7 seconds and in Query Analyzer about the same. If I make an Access query on the VIEWS (as linked tables) then it takes over 35 seconds. This is what I expect!
Avatar billede terry Ekspert
27. november 2001 - 09:56 #14
tak :o) Hope you find the problem!
Avatar billede sblar Nybegynder
27. november 2001 - 09:59 #15
Jeg ved altså helt hvad der skete med pointene, jeg ville gerne hæve dem til 60 og fordele dem med 20 til pierrehusted og 40 til terry, men den gik vist ikke. Hvis i ved hvordan man gør det så sig endelig til så jeg kan lave det om.
Avatar billede terry Ekspert
27. november 2001 - 10:06 #16
I would think it would be easiest to just make a new question and refer to this one.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester