26. november 2001 - 19:36Der 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.
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
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.
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).
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.
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?
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!
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.
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!
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.
I would think it would be easiest to just make a new question and refer to this one.
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.