MySQL Index 確認とは?INFORMATION_SCHEMA.STATISTICSを確認

MySQL Index 確認とは?INFORMATION_SCHEMA.STATISTICSを確認のアイキャッチイメージ

MySQL Index 確認とは?


MySQLではPRIMARY KEY(PK)、FOREIGN KEY(FK)、UNIQUEはINFORMATION_SCHEMA.TABLE_CONSTRAINTSで参照しますが、単一カラムIndexやマルチカラムIndexはINFORMATION_SCHEMA.STATISTICSで参照することになります。

ここではSQL文を発行しながら単一カラムIndexやマルチカラムIndexの追加や削除を行いその結果を確認していきます。

使用したMySQLのバージョンとデータ

MySQLは、mysql-installer-community-8.0.24.0.msiをDeveloperDefaultモードでインストールして使用しています。

使用したデータはMariaDB Sample Databaseよりnation.zipをダウンロード後解凍して使用しています。解凍後Windows PowerShellを起動して以下の手順でMySQLに取込んでください。

テスト用データを作成する

nationデータベースにはIndexを持つテーブルが存在しないので、テスト用に下記のように追加します。

成功すれば以下の様に表示されます。

Indexを追加する

vips_idxテーブルに単一カラムIndexとしてidx_vip_idを追加してみましょう。

MySQLでは以下のSQL文を実行します。
ALTER TABLE テーブル名 ADD INDEX Index名(カラム名);

Table:vips_idxのColumn_name:vip_idにKey_name:idx_vip_idの追加が確認できます。

次にregions_mltにマルチカラムIndexとしてidx_multiを追加してみましょう。

MySQLでは以下のSQL文を実行します。
ALTER TABLE テーブル名 ADD INDEX Index名(カラム名1, カラム名2, ・・・);

Table:regions_mltのColumn_name:region_idとColumn_name:continent_idにKey_name:idx_multiの追加が確認できます。

INFORMATION_SCHEMA.STATISTICSを確認する

それではMySQLのテーブルのIndex情報を提供するINFORMATION_SCHEMA.STATISTICSを確認します。

追加したIndexが確認できました。

表示する項目は以下から適宜選択してください。

EXPLAINの出力

EXPLAINを使用して、SELECTが使用するテーブルの情報を確認します。

possible_keys:idx_vip_id
key:idx_vip_id
Extra: Using index

このように、Indexが使用されていることが確認できます。

同様にEXPLAINを使用して、SELECTが使用するテーブルの情報を確認します。

possible_keys:idx_multi
key:idx_multi
Extra: Using index
このように、Indexが使用されていることが確認できます。

INFORMATION_SCHEMA.TABLE_CONSTRAINTSを確認する

MySQLのテーブルにある制約の情報を提供するINFORMATION_SCHEMA.TABLE_CONSTRAINTSを確認します。

Indexはこのテーブルに含まれていない事が確認できます。

Indexを削除する

MySQLでは以下のSQL文を実行してIndexを削除します。

ALTER TABLE テーブル名 DROP INDEX Index名;

INFORMATION_SCHEMA.STATISTICSを確認してみましょう。

Indexが削除されたことが確認できました。

MySQLのIndexを試してみよう

いかがでしたでしょうか。MySQLで単一カラムIndexやマルチカラムIndexの追加や削除を行いその結果をINFORMATION_SCHEMA.STATISTICSで確認しました。

ぜひご自身で実際にSQLを実行して理解を深めてください。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。