Database JUNKY

MySQL,MariaDBを中心としたブログです

mysql: 登録されているインデクスを確認する方法

mysql でテーブルの索引がどう設定されているのか知りたいときがあると思うのですが。その場合って [SQL] mysql > show index from TABLE_NAME; [/SQL] で確認できるのはご存知かと思います。

じゃあ、索引が設定されているかいないかわからないテーブルの索引のみを探したすのはどうするのかなあ。。と思ったらよくわからない。。。というわけでinformation_schemaでデータベースに登録する索引を一発で抽出するSQLを考えてみました。

索引の情報は、information_schema.STATISTICS に格納されているらしく、以下のSQLでなんとなく表示できることが確認できました。

[SQL] select

TABLE_SCHEMA,TABLE_NAME,INDEX_NAME,COLUMN_NAME,SEQ_IN_INDEX

from

information_schema.STATISTICS

where

TABLE_SCHEMA <> 'mysql'

order by TABLE_SCHEMA,TABLE_NAME,INDEX_NAME,SEQ_IN_INDEX

INTO OUTFILE "/tmp/index_list.csv"

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'; [/SQL]

いがかでしょうか?