2010-12-02 16 views
1

Ich habe 67 verschiedene Datenbanken und jede Datenbank hat mehr als eine gemeinsame Tabelle. Eine solche Tabelle ist company, und ich möchte die gesamten Zeilen in dieser Tabelle aus allen Datenbanken finden. Wie kann ich eine Abfrage schreiben, um die Gesamtanzahl der Zeilen aus allen Datenbanken zu erhalten?Ermitteln der Gesamtanzahl von Tabellenzeilen in mehreren Datenbanken

Antwort

3

Sie können die INFORMATION SCHEMA abfragen.

SELECT SUM(table_rows) FROM INFORMATION_SCHEMA.TABLES 
WHERE table_name = 'company' 

Sie können die ENGINE Spalte in der Tabelle verwenden, um zu sehen, wenn Sie auf MyISAM-Tabellen (die table_rows wird dann richtig sein) sind zählen, oder InnoDB

(table_rows wird die Schätzung vom Optimierungsprogramm verwendet werden)

Wenn Sie mehr als nur die Firmentabelle haben, können Sie GROUP BY Tabellenname :)

+0

Hinweis: Das Feld wird nur als Schätzwert für InnoDB-Tabellen festgelegt ist: http: // dev .mysql.com/doc/refman/5.0/de/tables-table.html – Orbling

+0

Danke, das wollte ich. – yogsma

1

Sie können dies von der INFORMATION_SCHEMA erhalten. Wenn Sie die MyISAM-Speicher-Engine verwenden, erhalten Sie genaue Zeilenanzahl. Wenn Sie InnoDB verwenden, sind die Zählerangaben ungefähre Angaben.

Hier ist ein Beispiel Abfrage, um die Gesamtzeilenanzahl für alle Tabellen erhalten in allen Schemata dem Namen „Firma“:

select sum(table_rows) 
from information_schema.tables 
where table_name = 'company'; 
+0

Hinweis: Dieses Feld wird nur als Schätzung für InnoDB-Tabellen festgelegt: http://dev.mysql.com/doc/refman/5.0/en/tables-table.html – Orbling

+0

@Orbling: Danke. Das habe ich schon erwähnt. –

+0

Ja, aber die Approximation kann sehr schlecht werden - daher ist es für InnoDB-Engine-Tabellen effektiv falsch. – Orbling

Verwandte Themen