Gibt es eine schnellere Möglichkeit, einen ADO-Dataset als
zu durchlaufen %Vor%Ich muss ein Dataset von ungefähr 9000 Elementen scannen und nur Datensätze extrahieren, die einer vordefinierten Gruppe von Zweignummern entsprechen.
Stellen Sie sicher, dass Sie DisableControls / EnableControls verwenden, wenn es nicht notwendig ist, die mit DataSet verknüpften sichtbaren Steuerelemente nicht zu aktualisieren.
%Vor%Grüße.
Zusätzliche Leistungssteigerungen können erzielt werden, indem String-Vergleiche so spät wie möglich vermieden werden (wenn alles andere übereinstimmt). Wenn in Ihrer Datenbank eine große Anzahl doppelter Zeichenfolgen vorhanden ist, sollten Sie Ihre Zeichenfolgen in einer separaten Tabelle speichern, die durch eine ganze Zahl mit der ersten Tabelle verknüpft ist.
Delphi ADO Zeug ( TADOQuery
oder TADOTable
) ist nicht schlecht, es ist schrecklich (überprüft mit Delphi XE2 / 2007). Exportiert Daten von Transbase-Tabellen (ODBC-Treiber) über SQL-Dateien und Navicat nach MySQL. Für Tabellen mit fast Millionen Datensätzen dauert es viele Stunden über ADO (8 Millionen Datensätze waren nach 2 Tagen bereits zu 10% fertig), einige Minuten mit TQuery
(aber wegen BDE-Fehlern mit großen Tabellen kann es zum Absturz kommen, BDE wurde nicht aktualisiert die letzten 15 Jahre), einige Minuten durch pure ODBC
oder Navicat.
Mein Ratschlag: Verwenden Sie alles statt ADO (zumindest bis ernsthaft von Entwicklern überarbeitet).
Möglicherweise möchten Sie die Abfrage so ändern, dass sie eine SQL-where-Klausel enthält, etwa
%Vor%Ich würde auch sehr empfehlen, vorwärts gerichtete, schreibgeschützte Cursor zu betrachten, um die größte Geschwindigkeitssteigerung zu erzielen.