MySQLでテーブル数を素早く確認する方法(2つの主要な方法と応用例)
MySQLでテーブル数をカウントするクエリ
方法1:INFORMATION_SCHEMAデータベースを使用する
MySQLには、データベースとその内容に関する情報を格納する INFORMATION_SCHEMA という特別なデータベースがあります。このデータベースの TABLES
テーブルには、すべてのテーブルに関する情報が格納されており、テーブル数をカウントするために使用できます。
SELECT COUNT(*) AS テーブル数
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'データベース名';
このクエリは、現在のデータベース (データベース名
に置き換える) に存在するすべてのテーブル数をカウントし、テーブル数
という名前の列で結果を返します。
方法2:システムテーブルを使用する
MySQL 5.0以降では、sys.tables
というシステムテーブルも使用できます。このテーブルには、すべてのデータベースに存在するすべてのテーブルに関する情報が格納されています。
SELECT COUNT(*) AS テーブル数
FROM sys.tables;
一般的に、方法1 を使用する方が推奨されます。これは、INFORMATION_SCHEMA
データベースはすべてのデータベースに標準で存在するため、データベース名さえわかればクエリを実行できるからです。一方、sys.tables
テーブルはMySQL 5.0以降でのみ使用可能であり、データベース名を取得する追加のステップが必要となります。
補足事項
- 上記のクエリは、現在のスキーマに存在するテーブルのみをカウントします。すべてのデータベースに存在するすべてのテーブルをカウントするには、
WHERE
句を削除する必要があります。 - テーブル名のプレフィックスを使用して、特定のグループに属するテーブルのみをカウントすることもできます。例えば、すべての
t_
で始まるテーブル数をカウントするには、次のようにクエリを変更します。
SELECT COUNT(*) AS テーブル数
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'データベース名'
AND TABLE_NAME LIKE 't_%';
-- データベース名に "mydb" を置き換える
SELECT COUNT(*) AS テーブル数
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'mydb';
このクエリを実行すると、次のような出力が得られます。
+---------+
| テーブル数 |
+---------+
| 10 |
+---------+
この例では、現在のデータベースには10個のテーブルが存在します。
以下のコードは、sys.tables
システムテーブルを使用して、MySQLサーバー全体に存在するすべてのテーブル数をカウントするクエリを実行する例です。
SELECT COUNT(*) AS テーブル数
FROM sys.tables;
+---------+
| テーブル数 |
+---------+
| 150 |
+---------+
これらのコード例を参考に、状況に合わせてクエリを調整してください。
MySQLでテーブル数をカウントするその他の方法
SHOW TABLES
ステートメントは、現在のデータベースに存在するすべてのテーブルの名前を表示します。このステートメントの出力行数をカウントすることで、テーブル数を取得することができます。
SELECT COUNT(*) AS テーブル数
FROM INFORMATION_SCHEMA.TABLES;
この方法は、シンプルな方法ですが、以下の点に注意する必要があります。
- システムテーブルやビューはカウントされない
- テーブル名のみが表示され、その他のテーブル情報は取得されない
ADMIN コマンドを使用する
MySQLの ADMIN
コマンドは、データベースに関する情報を表示するために使用できます。TABLES
コマンドを使用して、現在のデータベースに存在するすべてのテーブルに関する情報を表示することができます。この出力から、テーブル数を手動でカウントすることもできます。
ADMIN TABLES
この方法は、詳細なテーブル情報を確認できるという利点がありますが、手動でカウントする必要があるため、テーブル数が多い場合は非効率的です。
サードパーティ製のツールを使用する
MySQLを管理するためのサードパーティ製のツールの中には、テーブル数をカウントする機能が備わっているものがあります。これらのツールを使用すると、GUI上で簡単にテーブル数をカウントすることができます。
パフォーマンススキーマを使用する
MySQL 5.0.7以降では、パフォーマンススキーマというスキーマが導入されました。このスキーマには、events_statements_summary_by_digest
というテーブルがあり、このテーブルを使用して、実行された SHOW TABLES
ステートメントの数をカウントすることができます。
SELECT SUM(COUNT_STAR) AS テーブル数
FROM performance_schema.events_statements_summary_by_digest
WHERE SCHEMA_NAME = 'データベース名'
AND DIGEST LIKE '%SHOW TABLES%';
この方法は、複雑で、パフォーマンススキーマが有効化されている必要があるため、あまり一般的ではありません。
- テーブル数が多い場合は、
INFORMATION_SCHEMA
データベースまたはsys.tables
テーブルを使用するのが最も効率的です。 - テーブル名のみを知りたい場合は、
SHOW TABLES
ステートメントを使用するのが簡単です。 - 詳細なテーブル情報を確認したい場合は、
ADMIN
コマンドを使用するか、サードパーティ製のツールを使用します。 - パフォーマンススキーマが有効化されている場合は、
events_statements_summary_by_digest
テーブルを使用することができます。
上記以外にも、MySQLでテーブル数をカウントする方法はいくつかありますが、紹介した方法は最も一般的によく使用されるものです。
mysql