Zitat von
Mavarik:
Aber die ADOTable holt nicht alle Datensätze um die Anzahl zu ermitteln...!
Das hängt bei
ADO von der
CursorLocation ab. Bei
clUseClient werden
alle Datensätze zum Client transportiert.
Bei
clUseServer werden Datensätze nur auf Anfrage des Clients geliefert.
Die Belastung mit den vielen Daten wird somit nur dem Server untergeschoben.
Der Ms
SQL Server hat so unter Umständen schwer zu kämpfen, denn die Abfrage wird eben serverseitig ausgeführt.
Die Jet-Engine (
Access) ist ein Sonderfall, da Server und Client der gleiche Rechner ist.
Bei clUseClient findet eine bremsende Doppelpufferung statt.
Nichtsdestotrotz bewirkt ein Aufruf von TADOTable.RecordCount in der Jet-Engine ein "Full Table Scan",
während "SELECT Count(*) FROM ..." um ein mehrfaches Effizienter ausgeführt wird.