MySQL のインデックスの一覧を取得する

ここでは MySQL でデータベース内のインデックスの一覧を取得する方法をご説明します。

INFORMATION_SCHEMA.STATISTICS でインデックスの一覧を取得する

MySQL の INFORMATION_SCHEMA.STATISTICS システムビューから、インデックスの一覧を取得することができます。

INFORMATION_SCHEMA.STATISTICS は、システム用のデータベースも含め、全データベースのインデックスを返します。

SELECT 	*
FROM 	INFORMATION_SCHEMA.STATISTICS;

[実行結果]

MySQL のインデックスの一覧を取得する 1


主なカラムの意味は以下の通りです。

  • TABLE_SCHEMA: データベース名
  • TABLE_NAME: テーブル名
  • NON_UNIQUE: ユニークかどうか。 0 ならユニーク。
  • INDEX_NAME: インデックス名
  • COLUMN_NAME: カラム名

データベースを指定するには TABLE_SCHEMA = 'データベース名' のようにフィルターします。

インデックス名でフィルターするには、INDEX_NAME カラムを使ってフィルターできます。

例えば、INFORMATION_SCHEMA.STATISTICS から school_db データベースの、名前に student というキーワードが含まれるインデックスを取得するには次のようにできます。

SELECT 	*
FROM 	INFORMATION_SCHEMA.STATISTICS
WHERE 	INDEX_SCHEMA = 'school_db'
        AND INDEX_NAME LIKE '%student%';

[実行結果]

MySQL のインデックスの一覧を取得する 2

school_db データベースの 名前に student というキーワードが含まれるインデックスの一覧が取得できています。

idx_examid_studentid という名前のインデックスは、exam_results テーブル の exam_id と student_id に対するユニークインデックスです。

このようにカラム二つに対するインデックスは 2 行で表示され、SEQ_IN_INDEX が、1、2、のようになっています。


SHOW INDEX でインデックスの一覧を取得する

MySQL の SHOW INDEX 文を使っても、テーブルのインデックスの一覧を取得することができます。

SHOW INDEX FROM [テーブル名] と実行すると、今選択されているデータベースの指定したテーブルのインデックスの一覧を取得できます。

例えば、school_db データベースを選択した状態で、exam_results テーブルのインデックスを確認するには次のようにできます。

SHOW INDEX FROM exam_results;

[実行結果]

MySQL のインデックスの一覧を取得する 3


データベースを指定して、インデックスの一覧を取得したい時は、SHOW INDEX FROM [テーブル名] FROM [データベース名] のよう指定することができます。

例えば school_db が選択されている状態でも、sys データベースの sys_config テーブルのインデックスの一覧を取得したい時は次のようにできます。

SHOW INDEX FROM sys_config FROM sys;

[実行結果]

MySQL のインデックスの一覧を取得する 4


MySQL Workbench でインデックスを確認・生成・削除する

MySQL Workbench の Schema タブの [Database] > [Tables] > [テーブル名] > [Indexes] でも、そのテーブルのインデックスを確認することができます。

インデックスを選択して右クリックし、[Create Index] を選択します。

MySQL のインデックスの一覧を取得する 5


選択したテーブルの indexes の編集画面が開きますので、ここでインデクスの詳細を確認したり、インデックスの生成や削除を行えます。

MySQL のインデックスの一覧を取得する 6


以上、MySQL でデータベース内のインデックスの一覧を取得する方法をご説明しました。

© 2025 MySQL 入門