SHOW INDEX语句
SHOW [EXTENDED ] {INDEX |INDEXES |KEYS } {FROM |IN } tbl_name [{FROM |IN } db_name] [WHERE expr]
SHOW INDEX返回表索引信息。格式类似于SQLStatisticsODBC 中的调用格式。该语句要求对表中的任何列都具有一定的特权。
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_namedb_nametbl_name
SHOW INDEX FROM mytableFROM mydb;SHOW INDEX FROM mydb.mytable;
可选EXTENDED关键字使输出包含有关MySQL内部使用的隐藏索引的信息,用户无法访问这些隐藏索引。
WHERE条款可以给出使用更一般的条件来选择行,如在讨论第25.48,“扩展到SHOW语句”。
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如果对整个列进行了索引,则如果仅对该列进行部分索引,则为索引字符的数量。- 注意 - 前缀限制以字节为单位。然而,前缀长度为索引规范 - CREATE TABLE,- ALTER TABLE和- CREATE INDEX语句解释为非二进制串类型的字符数(- CHAR,- VARCHAR,- TEXT对于二进制串类型),并且字节数(- BINARY,- VARBINARY,- BLOB)。为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑到这一点。- 有关索引前缀的更多信息,请参见“列索引”和“ CREATE INDEX语句”。 
- Packed- 指示密钥的包装方式。 - NULL如果不是这样。
- Null- 包含 - YES是否该列可能包含- NULL值,- ''否则包含。
- Index_type- 使用的索引方法( - BTREE,- FULLTEXT,- HASH,- RTREE)。
- Comment- 关于索引的信息未在其自己的列中描述,例如 - disabled是否禁用了索引。
- Index_comment- COMMENT创建索引时,为索引提供的任何注释均带有属性。
- Visible- 索引是否对优化器可见。请参见“不可见索引”。 
- Expression- MySQL 8.0.13和更高版本支持功能性关键部分(请参见 Functional Key Parts),这会影响 - Column_name和- Expression列:- 对于非功能键部分,Column_name指示由键部分索引的列,且Expression为NULL。
- 对于功能键部件,Column_name列为NULL并Expression指示键部件的表达式。
 
- 对于非功能键部分,
有关表索引的信息也可从INFORMATION_SCHEMASTATISTICS表中获得。请参见“ INFORMATION_SCHEMA STATISTICS表”。有关隐藏索引的扩展信息仅可使用SHOW EXTENDED INDEX;它不能从STATISTICS表中获得。
您可以使用mysqlshow -k db_nametbl_name命令列出表的索引。
