忍者ブログ

エンジニア初心者の備忘録

エンジニア初心者が躓いたことハマったことを公開します!

MySQLでDB内の全てのインデックスの一覧をCSV出力する

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

MySQLでDB内の全てのインデックスの一覧をCSV出力する

今回は、MySQLでDB内の全てのインデックスの一覧をCSV出力する方法を整理します。

通常、インデックスを参照する場合、下記の方法があります。

SHOW INDEX FROM [データベース名.]テーブル名;
SHOW INDEX FROM テーブル名 FROM データベース名;

しかし、この方法だと、テーブル毎にしかインデックスが参照できません。


そこで、下記のMySQLコマンドを実行するとDB内の全てのインデックスの一覧をCSV出力できます。

select
TABLE_SCHEMA,TABLE_NAME,INDEX_NAME,COLUMN_NAME,SEQ_IN_INDEX
from
information_schema.STATISTICS
where
TABLE_SCHEMA = 'データベース名'
order by TABLE_SCHEMA,TABLE_NAME,INDEX_NAME,SEQ_IN_INDEX
INTO OUTFILE "/tmp/インデックス一覧名.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"';


なお、「information_schema」とは、

INFORMATION_SCHEMAはSQL標準の規格となっている、インスタンス内のメタデータを格納するデー タベースです。このようなメタデータを格納する機能は、データディクショナリやシステムカタログと呼ばれることもあります。MySQLの INFORMATION_SCHEMAは標準規格ANSI/ISO SQL:2003のPart 11のSchemataの定義に従っており、SQL:2003のコアであるF021 Basic information schemaに準拠するように実装されています。
『MySQLのメタデータ管理(2) INFORMATION_SCHEMA』
INFORMATION_SCHEMAにはメモリに格納された参照専用の特別なテーブルがあり、SELECT文を使ってメタデータの確認ができます。ただ し実態はテーブルではなくビューで、データを格納するファイルはありません。またトリガーの設定もできません。それぞれのテーブルに複数の文字列型の列が 存在しますが、文字コードは基本的にutf8で、デフォルトのCOLLATION (utf8_general_c)を使用しています。
『MySQLのメタデータ管理(2) INFORMATION_SCHEMA』


まとめると、

  1. INFORMATION_SCHEMAは、インスタンス内のメタデータを格納するデー タベース。
  2. INFORMATION_SCHEMAにはメモリに格納された参照専用の特別なテーブルがあり、SELECT文を使ってメタデータの確認ができる。
  3. この実態はテーブルではなくビューで、データを格納するファイルはない。
  4. MySQL サーバーに関する情報が保存されているデータベース。
  5. このデータベースを参照することは可能だが、更新及び削除することはできない。
以上です。


【参照サイト】
『mysql: 登録されているインデクスを確認する方法』
『MySQLでDB内のインデックスをすべて表示する方法についてのメモ』
『インデックスの作成・削除・情報表示・追加』
『MySQLのメタデータ管理(2) INFORMATION_SCHEMA』
『INFORMATION_SCHEMA というデータベースは何ですか?』
PR

コメント

プロフィール

HN:
プラムザ 太郎
性別:
非公開

P R