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

MySQL Index 確認とは?INFORMATION_SCHEMA.STATISTICSを確認
基本情報技術者試験の試験対策はこちら>>

MySQLエンジニア 案件・求人一覧はこちら

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を実行して理解を深めてください。

MySQLエンジニア 案件・求人一覧はこちら

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

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

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

合わせて読みたい

MySQLでのUPDATE文の使い方を紹介!UPDATE文を正しく使いこなそう... hbspt.cta.load(20723875, 'fa98f1b0-ed6d-41fa-b741-6ddc1c7be6ec', {"useNewLoader":"true","region":"na1"}); MySQLでのUPDATEの使い方を紹介します! 今回は、MySQLでのUP...
Oracle DBとは?概要や特徴・MySQLやPostgreSQLとの比較・基本的な使い方... hbspt.cta.load(20723875, 'e848ebee-6da0-461e-a268-2b5dc067cad8', {"useNewLoader":"true","region":"na1"}); Oracle DBとは? Oracle DB(オラクルデータベース)とは、米...
MySQLでよく使用する基本的なコマンドを実例と共に紹介... hbspt.cta.load(20723875, 'fa98f1b0-ed6d-41fa-b741-6ddc1c7be6ec', {"useNewLoader":"true","region":"na1"}); MySQLとは? MySQLとは、リレーショナルデータベース管理システム(R...
MySQL設定とは?MySQL設定方法・初期設定・文字コード・データベース... hbspt.cta.load(20723875, 'fa98f1b0-ed6d-41fa-b741-6ddc1c7be6ec', {"useNewLoader":"true","region":"na1"}); MySQLとは? MySQLとは、端的に言うとオープンソースのデータベース管...
MySQLクライアントとは?MySQL Serverのインストール方法・MySQL Command ... hbspt.cta.load(20723875, 'fa98f1b0-ed6d-41fa-b741-6ddc1c7be6ec', {"useNewLoader":"true","region":"na1"}); MySQLクライアントとは? MySQLクライアントとは、MySQLサーバ対...