メインコンテンツへスキップ

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
INFORMATION_SCHEMA は、MySQL サーバーのメタデータを標準の SQL クエリを通じて公開する仮想データベースです。SHOW TABLES、SHOW COLUMNS、および DESCRIBE が教えてくれることはすべて INFORMATION_SCHEMA でも分かり、しかも WHERE、JOIN、および集約の力をすべて使えます。

テーブルと列

データベース内のすべてのテーブルを一覧表示します。
table_rows は InnoDB テーブルでは(インデックス統計から導かれた)見積もりであり、正確な件数ではありません。正確さが必要な場合は SELECT COUNT(*) を使います。 テーブルのすべての列を一覧表示します。
すべてのテーブルにわたって、特定の型の列をすべて見つけます。

インデックス

テーブルのすべてのインデックスを一覧表示します。
主キーのないテーブルを見つけます。

制約

すべての制約(PRIMARY KEY、UNIQUE、FOREIGN KEY、CHECK)を一覧表示します。
すべての外部キーと、その参照先を一覧表示します。
CHECK 制約を一覧表示します。

ストアドルーチン

すべてのストアドプロシージャと関数を一覧表示します。
ルーチンの定義を表示します。

ビューとトリガー

すべてのビューを一覧表示します。
すべてのトリガーを一覧表示します。

権限

現在のユーザーの有効な権限を表示します。

主要なテーブルのリファレンス

INFORMATION_SCHEMA と SHOW コマンドの比較

SHOW コマンドは省略形であり、多くの場合 INFORMATION_SCHEMA に相当するものがあります。 フィルタ、結合、または集約が必要な場合は INFORMATION_SCHEMA のクエリのほうが適しています。対話的な確認には SHOW コマンドで十分です。

よくある質問

INFORMATION_SCHEMA のクエリは遅いですか?

InnoDB テーブルでは、一部のクエリ(特に TABLES と STATISTICS に対するもの)がインデックス統計の更新を引き起こし、大きなスキーマでは遅くなることがあります。メタデータを頻繁に問い合わせる場合は、キャッシュされた統計へより速くアクセスできる mysql.innodb_table_stats と mysql.innodb_index_stats を使ってください。

table_rows の値が間違って見えるのはなぜですか?

information_schema.tables.table_rows は InnoDB のインデックス統計からの見積もりであり、ライブの件数ではありません。大きなテーブルでは 40〜50% ずれることがあります。統計を更新するには ANALYZE TABLE tablename を実行し、正確な件数には SELECT COUNT(*) を使います。

トラブルシューティング

関連項目