Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#29

Re: Via SQL Access DB Tabelle sortieren und suchen

  Alt 16. Jan 2006, 17:12
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat