Re: Geschwindigkeitsproblem bei Access-Anwendung mit SQL-Server-Backend



Hallo David

quoting David Vari:

Wie kann ich es erreichen, dass die Möglichkeit zum Ändern und
Durchblättern der gefilterten Datensätze erhalten bleibt und dennoch
nicht immer alle Datensätze übertragen werden?

Was vermutlich passiert ist, dass Access aus irgendwelchen Gründen glaubt, dass es schneller zum Ziel kommt, wenn es die vermutlich komplexe Abfrage mit Joins und dergleichen, bei sich lokal auflöst. Damit es das machen kann, muss es alle Datensätze zu sich herholen und diese lokal auswerten und dem Benutzer präsentieren und das immer wieder, damit die Daten auch aktuell bleiben.


Was Access genau macht sollte Dir der Profiler des SQL Servers und JetShopPlan für Jet verraten (zu JetShowPlan schau mal beim www.dbdev.org nach dem entsprechenden Download mit der Beschreibung, wie das geht).

Was jedoch in den meisten Fällen hilft ist folgendes:
Die Abfrage, die hinter dem Hauptformular steckt migrierst Du zum SQL Server als View (Sicht). Du wirst wohl da und dort einige Anpassungen vornehmen müssen, da der SQL Server nicht die gleiche Syntax kennt, wie Jet. Auf VBA Funktionen kannst Du da nicht zurückgreifen, selber gestrickte Funktionen, die in der Abfrage als UDFs verwendet werden, ebenfalls nicht. IIf() musst Du mit CASE WHEN THEN ELSE END, Format mit Convert und Stringverarbeitungsfuntionen ersetzen, Nz mit Coalesce, etc.. Ziel sollte es sein, auf dem SQL Server eine View hinzubekommen, welche alle Datensätze genau so zurückliefert.


Diese View kannst Du nun auf dem SQL Server auf Performance trimmen, was jedoch bei 30'000 Datensätzen kaum nötig sein wird. Wenn diese Fiew im Query Analyzer läuft (Achtung, dieser ist ziemlich langsam, die Performance, die Du da siehst hat wenig mir der Performance der View selber zu tun), dann bindest Du diese wie eine Tabelle bei Dir in die Datenbank ein. Danach bindest Du diese Tabelle als Recordsource hinter das Formular statt der bisherigen Abfrage und kannst Dich in den meisten Fällen einer ungewohnten Geschwindigkeit erfreuen.

Gruss
Henry

--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org


.



Relevant Pages

  • Re: Select performance
    ... Die Abfrage ohne Order By ist schnell genug. ... Ich hab halt keine Ahnung wie ich den SQL Server dazu bewege zuerst ... Was passiert denn, wenn Du die Abfrage als View speicherst, und dann auf den View einen SELECT mit ORDER BY ausführst? ...
    (microsoft.public.de.sqlserver)
  • =?Utf-8?Q?Re:_SQL_2005_Express_Views_=28Sic?= =?Utf-8?Q?hten=29_Verst=C3=A4ndnisfrage?=
    ... Das gilt nicht für MS SQL Server!! ... SQL-Statement, d.h., das SQL-Statement wurde bereits geparst, optimiert ... Hier die Korrektur für SQL Server: ... Beim Speichern wird die View auf syntaktische Richtigkeit geparst. ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Re: Server 2005: Datenbank Sortierung - welche brauche ich?
    ... Wenn Du im SQL server einen hast, ist die Wahrscheinlichkeit groß, daß die ... Ich klicke auf den Namen meiner Datenbank und dann Neue Abfrage, ... ich beziehe mich jetzt mal nur auf den SQL Server 2005 selber. ...
    (microsoft.public.de.sqlserver)
  • Re: Select performance
    ... Diese Abfrage läuft auf dem SQL Server 2005, eine leicht abgewandelte auf SQL 2000. ... nur ein Index oder die Statistiken sind nicht aktuell. ... Konkrete DDL und Abfragen nebst SQL Server Version helfen oft, ...
    (microsoft.public.de.sqlserver)
  • Re: SSIS und Excel
    ... sondern mit Hilfe einer View auf Deine Daten zu. ... CREATE VIEW TestView ... Abfrage 'CREATE TABLE `Abfrage` ( ...
    (microsoft.public.de.sqlserver)