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
。这两个语句是等效的
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
可选的 EXTENDED
关键字使输出包含有关 MySQL 内部使用的隐藏索引的信息,这些索引用户无法访问。
WHERE
子句可以用于使用更通用的条件选择行,如第 28.8 节 “SHOW 语句的扩展” 中所述。
SHOW INDEX
返回以下字段
表
表的名称。
Non_unique
如果索引不能包含重复值,则为 0;如果可以包含,则为 1。
Key_name
索引的名称。如果索引是主键,则名称始终为
PRIMARY
。Seq_in_index
索引中的列序号,从 1 开始。
Column_name
列名。另请参阅
Expression
列的说明。排序规则
索引中列的排序方式。此列可以取值
A
(升序)、D
(降序)或NULL
(未排序)。基数
索引中唯一值数量的估计值。要更新此数字,请运行
ANALYZE TABLE
或(对于MyISAM
表)myisamchk -a。基数
是根据存储为整数的统计信息计算的,因此即使对于小表,该值也不一定准确。基数越高,MySQL 在执行连接时使用索引的可能性就越大。子部分
索引前缀。也就是说,如果只对列的一部分进行索引,则为索引字符数,如果对整个列进行索引,则为
NULL
。注意前缀 限制 以字节为单位。但是,
CREATE TABLE
、ALTER TABLE
和CREATE INDEX
语句中索引规范的前缀 长度 对于非二进制字符串类型(CHAR
、VARCHAR
、TEXT
)解释为字符数,对于二进制字符串类型(BINARY
、VARBINARY
、BLOB
)解释为字节数。为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑到这一点。有关索引前缀的更多信息,请参阅 第 10.3.5 节,“列索引” 和 第 15.1.15 节,“CREATE INDEX 语句”。
打包
指示密钥的打包方式。如果未打包,则为
NULL
。空
如果列可以包含
NULL
值,则包含YES
,如果不包含,则包含''
。索引类型
使用的索引方法(
BTREE
、FULLTEXT
、HASH
、RTREE
)。注释
有关索引的信息,这些信息未在其自己的列中描述,例如,如果索引被禁用,则为
disabled
。索引注释
在创建索引时使用
COMMENT
属性为索引提供的任何注释。可见
索引是否对优化器可见。请参阅 第 10.3.12 节,“不可见索引”。
表达式
MySQL 支持函数键部分(请参阅 函数键部分);这会影响
Column_name
和Expression
列对于非函数键部分,
Column_name
指示由键部分索引的列,而Expression
为NULL
。对于函数键部分,
Column_name
列为NULL
,而Expression
指示键部分的表达式。
有关表索引的信息也可以从 INFORMATION_SCHEMA
STATISTICS
表中获取。请参阅 第 28.3.34 节,“INFORMATION_SCHEMA STATISTICS 表”。有关隐藏索引的扩展信息只能使用 SHOW EXTENDED INDEX
获取;无法从 STATISTICS
表中获取。
您可以使用 mysqlshow -k db_name
tbl_name
命令列出表的索引。
默认情况下,如果表具有生成的不可见键,则 SHOW INDEX
会包含该键。您可以通过设置 show_gipk_in_create_table_and_information_schema = OFF
来禁止在语句输出中显示此信息。有关更多信息,请参阅 第 15.1.20.11 节,“生成的不可见主键”。