MySQLでインデックスの情報を確認する方法|show indexコマンド

スポンサードリンク

mysql では、show indexコマンドを使ってテーブルに設定されたインデックスの情報を確認することができます。

基本的な構文は以下の通りです。

mysql> show index from テーブル名;

下記は実際にインデックスの情報を表示した結果です。この結果から users テーブルには id カラムを主キーとするユニークな B-tree インデックスが存在することがわかります。

mysql> show index from users;
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table       | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| users |          0 | PRIMARY  |            1 | id          | A         |          11 |     NULL |   NULL |      | BTREE      |         |               | YES     | NULL       |
+-------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
1 row in set (0.48 sec)

各項目の概要は以下の通りです。

  • Table: インデックスが設定されているテーブル名です。
  • Non_unique: 0の場合はユニークキーです。カラム (id) の値は重複できません。
  • Key_name: PRIMARYはテーブルの主キーであることを意味します。
  • Seq_in_index: 複合インデックスの場合の、カラムの順番を示します。単一カラムのインデックスは 1 です。
  • Column_name: インデックスが設定されているカラムの名前です。
  • Collation: カラムの照合順序を示しています (A は昇順)。
  • Cardinality: インデックス内のユニークな値の推定数です。オプティマイザが実行計画を立てる際に、どのインデックスを使用するか判断する材料の一つとなります。
  • Sub_part: カラムの一部のみがインデックスされている場合、その長さを指定します。NULLの場合はカラム全体がインデックスされています。
  • Packed: キーの圧縮方法を示しますが、この場合は NULL です。
  • Null: インデックスされたカラムが NULL 値を許容するかどうかを示します。YES の場合は NULL 値を許容し、空 (または NO) の場合は許容しません。
  • Index_type: BTREE - 使用されているインデックスの種類が B-tree であることを示しています。
  • Comment: インデックスに対するコメントです。
  • Index_comment: インデックスに対するコメントです。
  • Visible: インデックスがオプティマイザによって利用可能か示しています。
  • Expression: 関数インデックスの場合に式が表示されます。


SQLパズル 第2版: プログラミングが変わる書き方/考え方
SQLに関する実践的な問題75問について解説した書籍。SQLで解決するものからテーブル設計自体を見直す解決方法など実践的なノウハウが学べる良書です。