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)を一覧表示します。ストアドルーチン
すべてのストアドプロシージャと関数を一覧表示します。ビューとトリガー
すべてのビューを一覧表示します。権限
現在のユーザーの有効な権限を表示します。主要なテーブルのリファレンス
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(*) を使います。
トラブルシューティング
関連項目
- MySQL のユーザー管理 — 権限の監査のための INFORMATION_SCHEMA.USER_PRIVILEGES
- MySQL のスキーママイグレーション — マイグレーションの前に INFORMATION_SCHEMA でスキーマを調べる
- MySQL のインデックスの仕組み — 見つけたインデックスのメタデータに基づいて行動する