2010-12-02 14 views
1

私は67種類のデータベースを持ち、各データベースには複数の共通テーブルがあります。そのようなテーブルの1つはcompanyであり、すべてのデータベースからそのテーブルの合計行を探したいとします。すべてのデータベースからの合計行数を取得するためのクエリを作成するにはどうすればよいですか?複数のデータベースにわたるテーブルの合計行数の検索

答えて

3

INFORMATION SCHEMAを照会することができます。

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

は、あなたが(正しいだろうTABLE_ROWS)をMyISAMテーブルをカウントしているかどうかを確認するために、テーブルにENGINE列を使用することができ、またはInnoDBの

(TABLE_ROWSは、オプティマイザが使用する推定されます)

以上の会社のテーブルがある場合は、GROUP BY tablename:

+0

注:そのフィールドは唯一InnoDBテーブルのための推定値として設定されます。http:// DEV .mysql.com/doc/refman/5.0/ja/tables-table.html – Orbling

+0

ありがとうございました。 – yogsma

1

INFORMATION_SCHEMAから入手できます。 MyISAMストレージエンジンを使用している場合は、正確な行数が得られます。 InnoDBを使用すると、カウントはおおよその値になります。ここで

は、すべてのスキーマ全体で「会社」という名前のすべてのテーブルの総行数を取得するクエリの例です:

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

注:このフィールドは、InnoDBテーブルの見積もりとしてのみ設定されています。http://dev.mysql.com/doc/refman/5.0/en/tables-table.html – Orbling

+0

@Orbling:ありがとうございます。私はすでに言及した。 –

+0

はい、近似は非常に貧弱になる可能性があります。そのため、InnoDBエンジンテーブルでは事実上間違っています。 – Orbling

関連する問題