Delphi-ADO-Abfrage

7

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.

    
Pieter van Wyk 22.02.2010, 16:42
quelle

6 Antworten

7

Die Verwendung von ADORecordset für solche Aufgaben ist wesentlich schneller:

%Vor%     
Linas 22.02.2010, 16:59
quelle
10

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.

    
quelle
8

@Pieter, zwei Optionen

1) Sie können Ihren SQL-Satz vor der Ausführung ändern, indem Sie die WHERE-Bedingung hinzufügen, die mit der vordefinierten Gruppe von Zweignummern übereinstimmt.

2) Verwenden Sie die Filter -Eigenschaft von TAdoQuery.

%Vor%     
RRUZ 22.02.2010 16:47
quelle
0

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.

    
skamradt 22.02.2010 18:50
quelle
0

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).

    
user2091150 05.05.2013 12:35
quelle
-1

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.

    
Darian Miller 23.02.2010 01:46
quelle

Tags und Links