Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: TUniQuery liefert falschen RecordCount

  Alt 4. Dez 2013, 17:26
Beim Query.Last muss die gesamte Abfrage mit allen Records und allen Feldern an den Client übertragen werden.
Bei der exlpziten Abfrage wird die Anzahl am Server ermittelt, was sehr schnell gehen sollte.
Das geht nicht unbedingt schnell. Wenn man mit join usw. arbeitet, würde eine separate Abfrage von count(*) dazu führen, dass die gesamte Abfrage ggf. doppelt erzeugt werden muss. Da sollte der Cache zwar helfen, aber es ist trotzdem unnötig.

Bei einfachen Tabellen kann man natürlich count(*) benutzen und es geht auch meistens schnell (leider nicht immer...). Aber wirklich Sinn macht das trotzdem nur, wenn die Datenmengen so groß sind, dass ein Last zu lange braucht.

Nebenbei gibt es z.B. bei MS SQL Server auch noch nette Features wie Histogrammerzeugung für die Wertverteilung in den Indexspalten, mit denen man z.B. ein Nachladen im Thread sehr gut implementieren kann.

// EDIT:
Ist dieses Verhalten eigentlich Komponenten abhängig?
Die BDE hat sowas z.B. nicht gemacht, und auch andere lokal dateibasierte Datenbanksysteme machen das oft nicht so.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat