Joh hat geschrieben: Do 12. Mär 2026, 17:54
lokalen Datenbanken
Man muss den Typ der Datenbank sich ansehen. Bei Dbase, FoxPro oder Access war der Recordcount das richtige MIttel der Wahl (Abgesehen, das ich eine Access und Excel Allergie berufsbedingt habe).
Bei Server Datenbanken (auch wenn sie lokal sind) sieht das anders aus, weil die Treiberschichten auf Datenmengen ausgelegt sind und nicht auf Datensätze.
Wenn du den den "SELECT COUNT(*)" verwendest, so kann der Optimizer vom SQL-Server sich die Daten optimiert zusammenstellen und liefert genaugenommen nur ein einfaches Recordset mit einer Zeile zurück. Das geht flott, meisten ist es nur ein IP-Paket. Muss der Server jetzt die kompletten Daten übertragen, so kann das im schlechtesten Fall die Netzwerklast unnötig belasten, weil Daten übertragen werden, die am Client nur gepuffert werden, genaugenommen aber nicht gebraucht werden. Brauche ich die Daten wirklich alle, so ist es besser diese geeignet abzulegen und dann die Anzahl übers Programm zu berechnen. Das schlechteste ist natürlich die Daten 2x abzurufen - einmal umd die Anzahl in Erfahrung zu bringen und einmal um sie anzuzeigen.
Ich habe da viel Lehrgeld gezahlt, über die Netzwerkverbindungen früher nach Fernost. Das ging am Anfang noch über T1 Verbindungen (
https://de.wikipedia.org/wiki/Trunk_1). Viel Spass mit Datenmengen auf den Leitungen

. Es ist aber aus Sicht des DB-Admins auch nicht lustig, wenn man draufkommt, das da unnötige Locks, Bandbreiten, Loads etc. am Server erzeugt werden.