show table status from

MySQL, PostgreSQL, SQLite
alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

show table status from

Post by alexander newald » 2005-08-21 19:48

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

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: show table status from

Post by Roger Wilco » 2005-08-21 21:26

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?

superuser1
Posts: 291
Joined: 2003-11-26 18:43
Location: earth

Re: show table status from

Post by superuser1 » 2005-08-21 21:34

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:

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: show table status from

Post by alexander newald » 2005-08-22 03:00

Ja

flo
Posts: 2223
Joined: 2002-07-28 13:02
Location: Berlin

Re: show table status from

Post by flo » 2005-08-22 08:26

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.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11134
Joined: 2003-02-27 01:00
Location: Hamburg

Re: show table status from

Post by Joe User » 2005-08-22 10:39

PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: show table status from

Post by alexander newald » 2005-08-22 14:48

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)

User avatar
Joe User
Project Manager
Project Manager
Posts: 11134
Joined: 2003-02-27 01:00
Location: Hamburg

Re: show table status from

Post by Joe User » 2005-08-22 14:56

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...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: show table status from

Post by alexander newald » 2005-08-22 15:03

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.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11134
Joined: 2003-02-27 01:00
Location: Hamburg

Re: show table status from

Post by Joe User » 2005-08-22 15:30

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
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: show table status from

Post by outofbound » 2005-08-22 15:34

[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

superuser1
Posts: 291
Joined: 2003-11-26 18:43
Location: earth

Re: show table status from

Post by superuser1 » 2005-08-22 16:20

Hi...

im Falle von MySQL (Version 4.1 vorausgesetzt) fiele mir jetzt nur eine Lösung über mehrere verschachtelte Subqueries ein...

:roll:

outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: show table status from

Post by outofbound » 2005-08-22 16:41

Ã?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

outofbound
Posts: 470
Joined: 2002-05-14 13:02
Location: Karlsruhe City

Re: show table status from

Post by outofbound » 2005-08-22 16:49

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