6

すべてのデータベースのサーバー上のすべてのテーブルのリストを取得する必要があります。

私はそれを行うための2つの方法を見つけました。

1)。実行するSHOW FULL TABLES from <each database name> WHERE table_type = 'BASE TABLE';

2)。実行するSELECT table_name, table_schema FROM information_schema.tables WHERE TABLE_TYPE = "BASE TABLE";

質問:

1)。パフォーマンスを向上させることができる上記の他の方法はありますか?

2)。上記の2つのメソッドの実行にパフォーマンスの違いはありますか?

3)。上記の2つの方法のどちらを実行するのが良いですか?

4

2 に答える 2

3

もちろんinformation_schematablesSHOW TABLESステートメント(古いMySQLバージョン<5.0で使用されていた)よりも望ましいです。より有用な情報を提供します。これは標準のシステムスキーマです(SQL Serverなどの他のデータベースでも同様のスキーマを見つけることができます)。標準のSELECTステートメントを使用して、このスキーマから情報を取得できます。つまり、WHERE、GROUP BY、ORDER BY、およびその他の句と関数を使用できます。ただし、大規模なデータベースでは、のパフォーマンスが低下するinformation_schema場合があります。

information_schemaパフォーマンスに関する記事をご覧ください: INFORMATION_SCHEMAOptimization

于 2012-09-14T06:54:51.010 に答える
1

可能であれば、を使用しますinformation_schema。これはANSI規格ですが、MySqlの独自機能にアクセスするには、SHOW*関数を使用する必要がある場合があります。ですから、それはあなたの特定の状況に依存すると思います。

于 2012-09-14T06:35:02.120 に答える