MySQL 8.0 リファレンスマニュアル


13.7.7.22 SHOW INDEX ステートメント

SHOW [EXTENDED] {INDEX | INDEXES | KEYS}
    {FROM | IN} tbl_name
    [{FROM | IN} db_name]
    [WHERE expr]

SHOW INDEX は、テーブルインデックス情報を返します。 この形式は、ODBC での SQLStatistics 呼び出しの形式に似ています。 このステートメントには、このテーブル内のいずれかのカラムに対する何らかの権限が必要です。

mysql> SHOW INDEX FROM City\G
*************************** 1. row ***************************
        Table: city
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: ID
    Collation: A
  Cardinality: 4188
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL
*************************** 2. row ***************************
        Table: city
   Non_unique: 1
     Key_name: CountryCode
 Seq_in_index: 1
  Column_name: CountryCode
    Collation: A
  Cardinality: 232
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
      Visible: YES
   Expression: NULL

tbl_name FROM db_name 構文のかわりに、db_name を使用することもできます。tbl_name。 次の 2 つのステートメントは同等です。

SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;

オプションの EXTENDED キーワードを指定すると、MySQL が内部的に使用し、ユーザーがアクセスできない非表示インデックスに関する情報が出力に含まれます。

セクション26.55「SHOW ステートメントの拡張」で説明されているように、WHERE 句を指定すると、より一般的な条件を使用して行を選択できます。

SHOW INDEX は、次のフィールドを返します。

  • Table

    テーブルの名前。

  • Non_unique

    このインデックスが重複を含むことができない場合は 0、できる場合は 1。

  • Key_name

    インデックスの名前。 このインデックスが主キーである場合、その名前は常に PRIMARY です。

  • Seq_in_index

    インデックス内のカラムシーケンス番号であり、1 から始まります。

  • Column_name

    カラム名。 Expression カラムの説明も参照してください。

  • Collation

    インデックス内でのカラムのソート方法。 これには、A (昇順)、D (降順) または NULL (ソートなし) の値を指定できます。

  • Cardinality

    このインデックス内の一意の値の数の推定値。 この数を更新するには、ANALYZE TABLE または (MyISAM テーブルの場合は)myisamchk -a を実行します。

    Cardinality は整数として格納された統計に基づいてカウントされるため、この値は、小さなテーブルの場合でも必ずしも正確であるとはかぎりません。 カーディナリティーが高いほど、MySQL が結合を実行するときにこのインデックスを使用する可能性は高くなります。

  • Sub_part

    インデックス接頭辞。 つまり、カラムが部分的にのみインデックス付けされている場合はインデックス付けされた文字の数で、カラム全体がインデックス付けされている場合は NULL です。

    注記

    接頭辞 limits はバイト単位で測定されます。 ただし、CREATE TABLEALTER TABLE および CREATE INDEX ステートメントのインデックス指定の接頭辞 lengths は、非バイナリ文字列型 (CHAR, VARCHAR, TEXT) の場合は文字数として解釈され、バイナリ文字列型 (BINARY, VARBINARY, BLOB) の場合はバイト数として解釈されます。 マルチバイト文字セットを使用する非バイナリ文字列カラムに接頭辞の長さを指定する場合は、これを考慮してください。

    インデックス接頭辞の詳細は、セクション8.3.5「カラムインデックス」 および セクション13.1.15「CREATE INDEX ステートメント」 を参照してください。

  • Packed

    キーがパックされる方法を示します。 パックされない場合は NULL

  • Null

    このカラムに NULL 値を含めることができる場合は YES が、できない場合は '' が含まれます。

  • Index_type

    使用されるインデックス方法 (BTREEFULLTEXTHASHRTREE)。

  • Comment

    各カラムで説明されていないこのインデックスに関する情報 (このインデックスが無効になっている場合の disabled など)。

  • Index_comment

    このインデックスが作成されたときに COMMENT 属性でインデックスに対して提供された任意のコメント。

  • Visible

    オプティマイザがインデックスを参照できるかどうか。 セクション8.3.12「不可視のインデックス」を参照してください。

  • MySQL 8.0.13 以上では、Column_name カラムと Expression カラムの両方に影響する機能キー部分 (機能キー部品 を参照) がサポートされています:

    • 機能しないキー部分の場合、Column_name はキー部分でインデックス付けされたカラムを示し、ExpressionNULL です。

    • 関数キー部分の場合、Column_name カラムは NULL で、Expression はキー部分の式を示します。

テーブルインデックスに関する情報は、INFORMATION_SCHEMA STATISTICS テーブルからも入手できます。 セクション26.34「INFORMATION_SCHEMA STATISTICS テーブル」を参照してください。 非表示インデックスに関する拡張情報は、SHOW EXTENDED INDEX のみを使用して使用できます。STATISTICS テーブルからは取得できません。

mysqlshow -k db_name tbl_name コマンドを使用してテーブルのインデックスをリストできます。


関連キーワード:  ステートメント, CREATE, インデックス, TABLE, カラム, DROP, テーブル, サブクエリー, FUNCTION, SLAVE