Page 1 of 1
show table status from
Posted: 2005-08-21 19:48
by alexander newald
Hi,
kann man irgendwie in einer Query die Summe aus Rows für alle Tabellen einer DB per "show table status from" erreichen? Oder wenn nicht, irgendwie anders?
Danke
Re: show table status from
Posted: 2005-08-21 21:26
by Roger Wilco
Alexander Newald wrote:kann man irgendwie in einer Query die Summe aus Rows für alle Tabellen einer DB per "show table status from" erreichen?
Könntest du das bitte nochmal verständlich formulieren?
Re: show table status from
Posted: 2005-08-21 21:34
by superuser1
Hi...
Roger Wilco wrote:Könntest du das bitte nochmal verständlich formulieren?
Wenn ich ihn richtig verstanden habe, will er die Rows aller in einer Database vorhandenen Tables über einen SQL-Query zählen.
:roll:
Re: show table status from
Posted: 2005-08-22 03:00
by alexander newald
Ja
Re: show table status from
Posted: 2005-08-22 08:26
by flo
Hi,
ich habe jetzt auf die Schnelle nichts erreicht - weder mit Summenfunktion auf den "show table status" noch per füttern des "Show table status" per Subselect (Select Db from mysql.db)
Ich bin ja gespannt, ob das geht ...
flo.
Re: show table status from
Posted: 2005-08-22 10:39
by Joe User
Re: show table status from
Posted: 2005-08-22 14:48
by alexander newald
Frage nicht gelesen oder einfach nur mal was posten wollen? (Oder ich sehe deine Antwort auf der Seite nicht...)
Für eine *Tabelle* ist es klar - Für die Summe aller Datensätze *aller* Tabellen einer *Datenbank* nicht (Mir zumindest)
Re: show table status from
Posted: 2005-08-22 14:56
by Joe User
Code: Select all
for table in db ; do http://dev.mysql.com/doc/mysql/en/counting-rows.html ; done
Wie es in der von Dir genutzten (Script-)Sprache gemacht wird, weisst Du ja selbst...
Re: show table status from
Posted: 2005-08-22 15:03
by alexander newald
Also meine Frage doch nicht richtig gelesen:
* ... in einer Query ... *
Das andere ist schon klar, aber nicht sonderlich schön, wenn man eine Tabelle mit einer Ã?bersicht über alle Datenbanken eines mySQL Servers erzeugen möchte.
Re: show table status from
Posted: 2005-08-22 15:30
by Joe User
Alexander Newald wrote:Also meine Frage doch nicht richtig gelesen:
* ... in einer Query ... *
Du kannst die Doku auch gerne allein durchforsten und/oder meine Antworten ignorieren.
Alexander Newald wrote:Das andere ist schon klar, aber nicht sonderlich schön, wenn man eine Tabelle mit einer Ã?bersicht über alle Datenbanken eines mySQL Servers erzeugen möchte.
Sieh Dir mal die Generierung des linken Frames bei phpMyAdmin an.
/me: EOD
Re: show table status from
Posted: 2005-08-22 15:34
by outofbound
[edit]
Deeskalationshint:
Oder wenn nicht, irgendwie anders?
Nichts anderes hat Joe gemacht. ;) ;) ;)
[/edit]
Back OZ:
In einer Postgres funktioniert das, da es dort ein Tabelle gibt, in der diese Informationen enthalten sind. Wird oft verwendet um den Optimizer zu justieren, der in psql ja cost based ist.
Mysql bin ich mir da nicht so sicher, ich glaube diese Abbildung gibt es nicht in einem master table. Daher dürfte das SQL für sowas sehr, sehr unschön werden.
Wie bildet denn die MySQL sowas intern ab? Das wäre wahrscheinlich der günstigste Ansatzpunkt.
[nochmaledit]
select sum(reltuples) from pg_class where relname in('list', 'of', 'mytables', 'or', 'subquery') geht z.B. ;)
[/nochmaledit]
Gruss,
Out
Re: show table status from
Posted: 2005-08-22 16:20
by superuser1
Hi...
im Falle von MySQL (Version 4.1 vorausgesetzt) fiele mir jetzt nur eine Lösung über mehrere verschachtelte Subqueries ein...
:roll:
Re: show table status from
Posted: 2005-08-22 16:41
by outofbound
Ã?brigens noch:
Je nachdem, wie man das abhandlet, kann das seeehr Performancefressend sein. ;)
Indices werden z.B. nicht "gefressen", wenn die Keyspalte NULL- Values enthält. (Diese werden z.B. nicht mitindiziert). D.h. im schlimmsten Fall Tablescans über diese Tabellen. Je nach grösse zerschlägt einem sowas den Cache des RDBMS und somit die Overall- Performance ganz gehörig. ;) Kommt allerdings wieder auf das RDBMS an. ;)
Meine Lösung ist. z.B. auch nicht optimal, da ich in der Postgres auf die Statistics zugreife, d.h. die Daten werden nur bei einem VACUUM neu eingelesen.
Man könnte noch pber eine Temptabelle gehen, aber das ist dann auch wieder ein Gefrickel.
Alternativ könnte man die ganze DB droppen und dann das Dumpfile auslesen.
Im Endeffekt kommt es darauf an, was der OP damit bezwecken will, wie schnell und wie exakt die Daten sein müssen.
Gruss,
Out
Re: show table status from
Posted: 2005-08-22 16:49
by outofbound
Btw, gibts für neue MySQLs auch:
http://dev.mysql.com/doc/mysql/en/infor ... chema.html
"INFORMATION_SCHEMA support is available in MySQL 5.0.2 and later. It provides access to database metadata."
Gruss,
Out