Tina: (MySQL) Anzahl der Einträge mehrerer Tabellen feststellen

Beitrag lesen

Ich möchte jetzt herausfinden, wie viele Datensätze jeweils zB. in tabelle2 und tabelle3 enthalten sind.
   SELECT * FROM tabelle2
   SELECT * FROM tabelle3
Und werte das Ergebnis dann mit mysql_num_rows() aus.

Das ist eine sehr schlechte Idee, denn die Anzahl der Datensätze kennt PHP erst, wenn es alle Datensätze abgeholt hat.

Jop, hab ich mir gedacht.

Im Forum fand ich noch die Möglichkeit von
   SELECT COUNT(*) FROM tabelle2
   SELECT COUNT(*) FROM tabelle3
was mir dann das Zählen schon vorweg nimmt.

Das ist der Weg des geringsten Aufwands für eine Tabelle. Das DBMS zählt schneller und muss dann nur eine Zahl an den Client übermitteln. Außerdem muss MySQL in dem speziellen Fall nicht alles  zu Fuß zählen, denn die Gesamtzahl der Datensätze verwaltet es extra und hat damit einen sehr schnellen Zugriff auf das Ergebnis.

Bei der Möglichkeit hab ich aber auch wieder so viele Datenbankabrfagen, wie ich Tabellen untersuchen möchte, was bei vielen Tabellen vermutlich zu Problemen führt.

Nicht wirklich. Es sei denn, du schränkst das Suchergebnis ein und das DBMS kann keinen Index verwenden.

Gut zu wissen, dass das der geringste Aufwand für die DB ist, das war nämlich so meine Sorge.
Ich denke mal, dass wird dann die Methode meiner Wahl sein. :)

Dazu fällt mir SHOW TABLE STATUS [LIKE '...'] ein.
Das liefert einem ja ein Ergebnis, in dem zu jeder Tabelle auch die Anzahl der Datensätze steht.

Ja, und ein Datensatz pro Tabelle ist doch vertretbar. Du wirst doch wohl hoffentlich keine Tausende von Tabellen anlegen?

Naja ich hab keine tausende Tabellen, es ging mir eigentlich auch eher um die Theorie.
In der Praxis funktionieren ja alle vorgeschlagenen Methoden, aber ich wollte halt wissen, welche die effizenteste ist und am wenigsten Zeit braucht.
Und ob es vll. eine Methode mit nur einer Anfrage gibt, aber ok, deine Argumente für das mit COUNT haben mich überzeugt, dass das mit mehreren ok ist. :)

Jedenfalls mal Danke für die schnelle und gute Hilfe.