AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Anzahl Datensätze bestimmen
Thema durchsuchen
Ansicht
Themen-Optionen

Anzahl Datensätze bestimmen

Ein Thema von FrankBrin · begonnen am 1. Mai 2008 · letzter Beitrag vom 1. Mai 2008
Antwort Antwort
FrankBrin

Registriert seit: 8. Mär 2005
Ort: Oppenweiler
105 Beiträge
 
Delphi 2007 Enterprise
 
#1

Anzahl Datensätze bestimmen

  Alt 1. Mai 2008, 11:41
Datenbank: MSSQL 2k5 Express • Zugriff über: ADO
Hallole miteinander,
ich hab da eine Tabelle in einer Datenbank, die ca. 1 Million Datensätze beinhaltet. Nun möchte ich auf meinem Form die Anzahl der Datensätze anzeigen.
Mach ich ein SELECT * dauert das ganze ca. 5 Minuten und Arbeitsspeicher brauch das Programm auch unendlich viel.
Auch ein Select Count(*) brauch ca 2 Minuten, aber nicht soviel Speicher.

Gibts da nix schnelleres?

Gruß Frank
Frank Brinschwitz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Anzahl Datensätze bestimmen

  Alt 1. Mai 2008, 11:49
Select Count(<PK>) sollte schneller sein
Markus Kinzler
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Anzahl Datensätze bestimmen

  Alt 1. Mai 2008, 13:15
Bei mir ist das leider nicht schneller (MSSQL2K). Da hilft nur ein Griff in die Trickkiste:
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('MyTableName') AND indid < 2
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Anzahl Datensätze bestimmen

  Alt 1. Mai 2008, 16:34
Zitat von alzaimar:
Bei mir ist das leider nicht schneller (MSSQL2K). Da hilft nur ein Griff in die Trickkiste:
SELECT rows FROM sysindexes WHERE id = OBJECT_ID('MyTableName') AND indid < 2
Liefert keine 100% gültigen Wert das die Werte in den Systemtabellen nicht mit jeder Datensatzänderung (Hinzufügen/Löschen) aktualisiert werden. Hatten diese Lösung auch mal und mußten wieder auf die select count(*)-Methode wechseln. Bei MySQL wäre es noch schlimmer da hier die Werte in den Systemtabellen bis zu 50% vom eigentlichen aktuellen Wert abweichen können.

Wieviel RAM hat den der PC (bzw. der SQL-Server) zur verfügung? Hier hilft nur das er SQL Server (unabhängig ob MS SQL, MySQL, Oracle, ...) genügend RAM zur verfügung hat um den Primärindex komplett im Speicher zu halten.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
FrankBrin

Registriert seit: 8. Mär 2005
Ort: Oppenweiler
105 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Anzahl Datensätze bestimmen

  Alt 1. Mai 2008, 22:20
Guten Abend,
nach kleiner Vatertagsparty bin ich jetzt wieder zu meinem Problem zurückgekehrt.
Erstmal Danke für die schnelle Hilfe

@mKinzler
Select Count( <PK>), dass geht bei mir auch nicht schneller.

@alzaimar
Dein Vorschlag geht echt raz - faz.

@Bernhard Geyer
...und wenn die Anzahl bei dem Vorschlag von alzaimar nicht so ganz passt, ist bei der großen Anzahl von Datensätzen nicht wichtig. Ich hab halt in der Anzeige ein ca. davor gemacht. Dieser Wert soll nur ein Gefühl dafür geben, wie voll die DB ist.

Also herzlichen Dank an Alle

Gruß Frank
Frank Brinschwitz
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Anzahl Datensätze bestimmen

  Alt 1. Mai 2008, 23:09
Zitat von FrankBrin:
...und wenn die Anzahl bei dem Vorschlag von alzaimar nicht so ganz passt, ist bei der großen Anzahl von Datensätzen nicht wichtig. Ich hab halt in der Anzeige ein ca. davor gemacht. Dieser Wert soll nur ein Gefühl dafür geben, wie voll die DB ist.
Dann ist es OK. Bei uns war die genaue Anzahl nötig.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz