Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   MySQL Datensatzanzahl im Administrator > Count im Select (https://www.delphipraxis.net/163260-mysql-datensatzanzahl-im-administrator-count-im-select.html)

Captnemo 21. Sep 2011 23:01

Datenbank: MySQL • Version: 5.1 • Zugriff über: ZEOS

MySQL Datensatzanzahl im Administrator > Count im Select
 
Noch ne Frage zu MySQL. Ich habe eine Tabelle mit 81615 Zeile laut MySQL Administrator. Wenn aber ein Query mache "Select Count(lfdnr) from main" dann bekomme ich nur 45358.
Ein optimieren, repair oder export-import ändern daran nichts. Woran kann das liegen? Liefert der MySQL falsche Informationen?

Union 21. Sep 2011 23:03

AW: MySQL Datensatzanzahl im Administrator > Count im Select
 
Wie wäre es mit count(*)?

Bernhard Geyer 22. Sep 2011 07:37

AW: MySQL Datensatzanzahl im Administrator > Count im Select
 
Jede Datenbank hinterlegt auch Statistikinformationen auf die es schnell Zugriff hat. Diese Statistikinfos sind jedoch nicht immer 100% aktuell.

Captnemo 22. Sep 2011 07:52

AW: MySQL Datensatzanzahl im Administrator > Count im Select
 
Zitat:

Zitat von Union (Beitrag 1125900)
Wie wäre es mit count(*)?

Gleiche Ergebnis, da das Feld Lfdnr in diesem Fall Autoinc ist und demnach niemals leer.

Zitat:

Zitat von Bernhard Geyer (Beitrag 1125941)
Jede Datenbank hinterlegt auch Statistikinformationen auf die es schnell Zugriff hat. Diese Statistikinfos sind jedoch nicht immer 100% aktuell.

Aaaaber, es bleibt auch alles so, wenn ich die DB löschen, neu anlege und dann zurückspiele. Und der MySQL-Administrator spielt sie ja über Insert's ein. Also müßte doch danach wenigstens die Anzahl so ungefähr hinhauen. Ich meine ne Abweichung um 5-10% lass ich mir ja noch gefallen. Aber das ist ja fast das Doppelte.

Bernhard Geyer 22. Sep 2011 08:13

AW: MySQL Datensatzanzahl im Administrator > Count im Select
 
Zitat:

Zitat von Captnemo (Beitrag 1125945)
Also müßte doch danach wenigstens die Anzahl so ungefähr hinhauen. Ich meine ne Abweichung um 5-10% lass ich mir ja noch gefallen. Aber das ist ja fast das Doppelte.

Nee, muss es nicht. Ich glaube bei MS SQL habe ich zu solchen Infos gelesen das die auch um 50% abweichen kann.
Aber gugst du mal hier

Zitat:

TABLE_ROWS (and perhaps some other columns in INFORMATION_SCHEMA.TABLES) may get out of sync with the current table contents, but you can update it by running ANALYZE.

jobo 22. Sep 2011 08:43

AW: MySQL Datensatzanzahl im Administrator > Count im Select
 
Ich habe keine Antwort zu dem Phänomen, aber man sollte bei der Frage/Diskussion unterscheiden, ob man über (veraltete) Statistiken spricht, oder SQL Aggregat Ergebnisse. (Letzteres meint natürlich kein SQL auf eine Statistik Tabelle sondern auf Echtdaten). Letztlich wäre es ja auch erbärmlich, wenn ein Sum, AVG, Count, ... nur immer ungefähr stimmt. Dann kann ich auch Karteikarten zählen.
Bin kein MySQL Spezi, als Hinweis kann ich lediglich noch liefern, dass es einige Stellen gibt, wo mySQL mit den Default Einstellungen etwas unsauber/faul (damit schneller) ist. Hab z.B. sowas mit "Group by " im Kopf, das würde bei einem Count(*) mglw. ja unter der Haube auch passieren. Neuere Versionen haben den Default evtl auch schon entsprechend "korrigiert".
Also ich würde mal nach entsprechenden "mach es exakt" Schaltern suchen.

Bernhard Geyer 22. Sep 2011 08:49

AW: MySQL Datensatzanzahl im Administrator > Count im Select
 
Die Statistikinfos sind bei jedem DBMS nicht 100% korrekt. Diese jedesmal zu bestimmen wäre ein nicht unerheblicher Aufwand wenn man nicht nur von "Hobby-DB's" spricht sondern in den Bereich von TByte großen Datenbanken gehen würde auf der im ms-Bereich sich praktisch jede Tabelle ändert.

jobo 22. Sep 2011 08:55

AW: MySQL Datensatzanzahl im Administrator > Count im Select
 
Ja, das ist ja auch verständlich.
Ich wollte nur darauf hinweisen, dass es 2 verschiedene paar Schuhe sind, Statistikdaten (aus Statistiktabellen) auszulesen oder Aggregat-Abfragen auf Produktionsdaten durchzuführen. Und um letzteres geht es ja hier wohl.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz