Farbschema: Hell
Sie befinden sich hier: start » de » Dokumentation » Datenintegration und Datenzugriff » WKL OData-ODBC-Treiber » Anleitungen zum OData-ODBC-Treiber » So lesen Sie große Mengen schnell aus verknüpften Tabellen

So lesen Sie große Mengen schnell aus verknüpften Tabellen

Code, der eine verknüpfte Tabelle von Anfang bis Ende durchläuft – ein Export, eine Prüfschleife, ein Bericht in VBA –, ist über den Treiber deutlich langsamer, wenn er ein Dynaset öffnet. Mit einer Momentaufnahme liest er dieselben Zeilen in einem Bruchteil der Zeit.

Lösungsübersicht

Access (ACE) liest eine verknüpfte Tabelle auf zwei Wegen, über den Treiber genauso wie über den ODBC-Treiber von SQL Server:

  • Momentaufnahme (dbOpenSnapshot; Berichte, Kombinationsfelder): eine Anweisung, die Zeilen holt der Treiber seitenweise.
  • Dynaset (dbOpenDynaset; Formulare, Datenblätter): zuerst nur die Schlüssel, danach jede angezeigte Zeile einzeln mit … WHERE "ID" = ?. Über den Treiber wird daraus je Zeile eine Anfrage an den Dienst.

Ein Formular holt nur die Zeilen, die es zeigt; das fällt nicht auf. In einer Schleife über alle Zeilen kostet jede Zeile über den Treiber eine eigene Anfrage – mit dem festen Preis einer Anfrage über HTTP. Eine Momentaufnahme vermeidet ihn.

Umsetzung

  1. Öffnen Sie Recordsets, die Sie nur lesen, als Momentaufnahme:

    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT Nummer, Bezeichnung FROM Artikel WHERE Gruppe = 'S'", dbOpenSnapshot)
    Do Until rs.EOF
        ' … verarbeiten …
        rs.MoveNext
    Loop
    rs.Close
  2. Begrenzen Sie Spalten und Zeilen in der Anweisung: Bedingung und Spaltenliste gehen an den Dienst, der nur das Gefundene liefert.
  3. Lesen Sie mit MoveNext, nicht mit GetRows; siehe Hinweise.

Ergebnis: Eine Momentaufnahme liest alle Zeilen mit wenigen Anfragen, ein Dynaset braucht je besuchte Zeile eine. Über ein Netz kommt je Anfrage dessen Umlaufzeit hinzu; beim Dynaset also je Zeile.

Hinweise

Verwandte Themen

de/wiki/data-conectivity/odata-odbc/how-to/read-large-sets.txt · Zuletzt geändert: von Wolfgang van der Stille