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 TABLE
、ALTER 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
使用されるインデックス方法 (
BTREE
、FULLTEXT
、HASH
、RTREE
)。 -
Comment
各カラムで説明されていないこのインデックスに関する情報 (このインデックスが無効になっている場合の
disabled
など)。 -
Index_comment
このインデックスが作成されたときに
COMMENT
属性でインデックスに対して提供された任意のコメント。 -
Visible
オプティマイザがインデックスを参照できるかどうか。 セクション8.3.12「不可視のインデックス」を参照してください。
-
式
MySQL 8.0.13 以上では、
Column_name
カラムとExpression
カラムの両方に影響する機能キー部分 (機能キー部品 を参照) がサポートされています:機能しないキー部分の場合、
Column_name
はキー部分でインデックス付けされたカラムを示し、Expression
はNULL
です。関数キー部分の場合、
Column_name
カラムはNULL
で、Expression
はキー部分の式を示します。
テーブルインデックスに関する情報は、INFORMATION_SCHEMA
STATISTICS
テーブルからも入手できます。 セクション26.34「INFORMATION_SCHEMA STATISTICS テーブル」を参照してください。 非表示インデックスに関する拡張情報は、SHOW EXTENDED INDEX
のみを使用して使用できます。STATISTICS
テーブルからは取得できません。
mysqlshow -k db_name
tbl_name
コマンドを使用してテーブルのインデックスをリストできます。