Zitat von
Christian18:
ist der Filter bei
ADO schneller als bei der
BDE???
Die Frage ist nicht ganz korrekt gestellt, denn die Filter-Eigenschaft ist in TDataset schon angelegt. Im allgemeinen filtert man damit in-memory, also unabhängig von der
DB. Deshalb wird das Filtern mit
MyTable.Filter = 'Foo = 3';
i.a. viel schneller gehen. Aber eben nicht immer. Wenn Du millionen von Datensätzen im Speicher hättest (o.k. dann würde ich Dich prügeln
) und Du dann einen Filter draufsetzt, dauert das länger, als diese Arbeit einen ordendlichen
DB-Server übernehmen zu lassen, speziell, wenn auf dem zu filternden Feld ein Index angelegt ist.
Der Vorteil beim 'lokalen Filtern' ist natürlich der, das der
DB-Server mit diesen 'unwichtigen' Aufgaben nicht belastet wird. Der Nachteil ist der, das die Daten u.U. nicht aktuell sind.
Du musst immer abwägen, was Du willst. Normalerweise sollte man sich von einem
DB-Server nur genau die Daten holen, die man braucht. Krankes Beispiel: Um alle Daten vom Kunden 'Kassupke' zu holen, kann man natürlich erst alle Kundendatensätze laden und dann mit dem lokalen Filter 'Name="Kassupke"' den einen Datensatz ausfiltern. Aber das ist ja suboptimal, sozusagen.
Hier ist es natürlich angebracht, per geeignetem Select 'SELECT * FROM Kunden WHERE Name='Kassupke'' den
DB-Server zu schonen.
Gegenbeispiel: Um den Anwender durch alle Kunden navigieren und ihn selbst filtern zu lassen, ist es natürlich besser, einmalig alle Kunden zu ziehen (vorausgesetzt, es sind nicht zu viele) und dann über ein nettes Tool zu filtern.
Wie gesagt, immer abhängig vom Anwendungsfall.