Optimieren von Microsoft Access beim Verwenden von ODBC-Datenquellen

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
286222 How to Optimize Microsoft Access When Using ODBC Data Sources
Fortgeschritten: Erfordert Fachkenntnisse in den Bereichen Codierung und Interoperabilität sowie Mehrbenutzerfähigkeiten.

Dieser Artikel bezieht sich ausschließlich auf eine Microsoft Access-Datenbank (.mdb).

In Artikel 209091 wird dieses Thema für Microsoft Access 2000 behandelt.

Zusammenfassung

Dieser Artikel enthält verschiedene Tipps zum Verbessern der Leistung beim Zugreifen auf Daten von einer ODBC-Datenquelle.

Weitere Informationen

Verwenden Sie die folgenden Tipps, um die Leistung beim Verwenden von ODBC-Datenquellen zu verbessern:

  • Beschränken Sie die vom Server angeforderte Datenmenge. Fordern Sie nicht mehr Daten an als Sie benötigen. Verwenden Sie Abfragen, um nur die Felder und Zeilen auszuwählen, die Sie benötigen.
  • Verwenden Sie nur die Funktionalität, die Sie benötigen. Snapshots sind nicht so funktionell wie Dynasets und können nicht aktualisiert werden. Snapshots können jedoch insbesondere bei kleinen Recordsets ohne Memo- oder OLE-Objekt-Felder schneller sein.
  • Erstellen Sie verknüpfte (eingebundene) Tabellen, um auf Serverdaten zuzugreifen. Vermeiden Sie den "direkten" Serverzugriff (d. h., öffnen Sie keine Remote-Datenbanken, um Abfragen darauf ausführen). Erstellen Sie stattdessen eingebundene Tabellen oder Pass-Through-Abfragen.
  • Gehen Sie mit Bedacht vor, wenn Sie Listen- und Kombinationsfelder entwerfen. Auf einem Formular benötigt jedes Listenfeld, Kombinationsfeld, Unterformular und Steuerelement, das eine Summe enthält, eine separate Abfrage. Bei lokalen Daten kann die Leistung ausreichend sein. Bei Remote-Daten kann es jedoch zu großen Verzögerungen kommen, wenn Sie ein Formular öffnen, weil jede Abfrage an den Server gesendet und eine Antwort zurückgegeben werden muss, bevor das Formular geöffnet werden kann.
  • Vermeiden Sie große Kombinationsfelder. Wenn Sie ein Kombinationsfeld mit hunderten oder sogar tausenden von Auswahlmöglichkeiten einfügen, die auf einer lokalen Tabelle basieren, kann dies zu einer akzeptalen Antwortzeit führen, insbesondere, wenn Sie auf der lokalen Tabelle einen entsprechenden Index definieren. Bei einer Remotetabelle führt ein solches Kombinationsfeld jedoch zu einer erheblichen Verlangsamung, weil es Server- und Netzwerkressourcen benötigt, wenn es zum Auffüllen der Liste Daten abruft. Es empfiehlt sich daher, die Anzahl der an das Kombinationsfeld zurückgegebenen Zeilen zu beschränken, wenn Sie mit Remotedaten arbeiten. Sie können die Daten auch in mehrere kleinere Kombinationsfelder aufteilen (wobei Sie den obigen Tipp beachten sollten).
  • Verwenden Sie den Befehl Suchen nur bei kleineren Recordsets. Das Microsoft Jet-Datenbankmodul optimiert den Befehl Suchen, so dass er gut bei lokalen Recordsets beinahe jeder Größe und bei Remoterecordsets angemessener Größe funktioniert. Bei großen Remoterecordsets (tausende von Datensätzen oder mehr) sollten Sie stattdessen jedoch einen Filter oder eine Abfrage erstellen und ebenfalls darauf achten, Beschränkungen zu verwenden, die Ihr Server verarbeiten kann.
  • Stellen Sie sicher, dass Abfragen für die Verabeitung an den Server gesendet werden. Der wichtigste Faktor bei der Abfragegeschwindigkeit von Remotedaten besteht darin, sicherzustellen, dass Ihr Server einen möglichst großen Teil der Abfrage ausführt. Das Microsoft Jet-Datenbankmodul versucht, die gesamte Abfrage an Ihren Server zu senden, wertet jedoch alle Abfrageklauseln und Ausdrücke lokal aus, die nicht allgemein von Servern oder speziell von Ihrem Server unterstützt werden. Die folgenden Funktionen werden allgemein nicht von Servern unterstützt:
    • Operationen, die nicht in einer einzigen SQL-Anweisung ausgedrückt werden können. Diese Situation kann auftreten, wenn Sie eine Abfrage als Eingabe in eine andere Abfrage verwenden, oder wenn die FROM-Klausel der Abfrage eine Gesamtsummenabfrage oder DISTINCT-Abfrage enthält. Häufig können Sie Abfragen neu organisieren, so dass Gesamtsummen nach allen anderen Operationen berechnet werden.
    • Operationen, die Microsoft Jet-Datenbankmodul-spezifische Erweiterungen zu SQL darstellen, wie Kreuztabellenabfragen, TOP-Abfragen und Berichte mit mehreren Gruppierungs- und Gesamtsummenebenen. Beachten Sie, dass einfache Kreuztabellenabfragen an Server gesendet werden können.
    • Ausdrücke, die Microsoft Access-spezifische Operatoren oder Funktionen enthalten. Die finanziellen Berechnungsfunktionen und statistischen Aggregate von Microsoft Access haben keine Server-Entsprechungen.
    • Benutzerdefinierte Visual Basic für Applikationen-Funktionen, die Remotespalten als Argumente verwenden. Diese Funktionen existieren nicht auf dem Server, sondern müssen Daten von Remotespalten verarbeiten. Wenn eine benutzerdefinierte Funktion jedoch einen einzelnen Wert zurückgibt und nicht auf eine Remotespalte verweist, wird die Funktion lokal ausgewertet und ihr Wert wird für die Verarbeitung an den Server gesendet.
    • Mischen von Text- und numerischen Datentypen in Operatoren oder Ausgaben von UNION-Abfragen. Den meisten Servern fehlt die Nachsichtigkeit von Microsoft Access hinsichtlich von Datentypen. Verwenden Sie aus diesem Grund explizite Umwandlungsfunktionen, wenn erforderlich.
    • Heterogene Verknüpfungen zwischen lokalen Tabelle und Remotetabellen oder zwischen Remotetabellen in unterschiedlichen ODBC-Datenquellen. Verknüpfungen zwischen kleinen lokalen Tabellen und großen Remotetabellen, bei denen die Verknüpfungsspalte indiziert ist, können zu einer Remote-Indexverknüpfung führen. In einer Remote-Indexverknüpfung wird für jede Zeile in der lokalen Tabelle eine Abfrage an den Server gesendet, und es werden nur die verknüpften Zeilen zurückgegeben.
    • Nicht remotefähige Ausdrücke oder Ausdrücke, die nicht remote gesendet werden können, weil sie nicht von Ihrem Server ausgewertet werden können. Nicht remotefähige Ausgabeausdrücke (in der SELECT-Klausel) erzwingen keine lokale Auswertung Ihrer Abfrage, es sei denn, sie treten in einer Gesamtsummenabfrage, einer DISTINCT-Abfrage oder einer UNION-Abfrage auf. Nicht remotefähige Ausdrücke in anderen Klauseln (WHERE, ORDER BY, GROUP BY, HAVING etc.) erzwingen zumindest die lokale Auswertung eines Teils Ihrer Abfrage.
  • Server unterscheiden sich in einigen Bereichen der unterstützten Funktionalität. Wenn Sie eine Remotetabelle einbinden, fragt das Microsoft Jet-Datenbankmodul die Fähigkeiten des ODBC-Treibers ab. Wenn die benötigte Funktionaliät vom Treiber und vom Server unterstützt wird, sendet das Microsoft Jet-Datenbankmodul die Operation für die Verarbeitung zum Server. Wenn nicht, führt das Microsoft Jet-Datenbankmodul die Operation lokal durch. Zu den Bereichen mit abweichender Unterstützung gehörten (u.a.) die folgenden:
    • Äußere Verknüpfungen. Beachten Sie, dass das Microsoft Jet-Datenbankmodul nicht mehrere äußere Verknüpfungen zu einem Server sendet, obwohl eine einzelne äußere Verknüpfung von vielen inneren Verknüpfungen begleitet werden kann.
    • Numerische, Zeichenfolgen- und Datum/Uhrzeit-Funktionen, wie Log(), Mid$(), DatePart() etc.
    • Konvertierungsfunktionen, wie CInt(), CStr(), CVDate() etc.
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Eigenschaften

Artikelnummer: 286222 – Letzte Überarbeitung: 30.10.2008 – Revision: 1

Feedback