13.7.5.22 SHOW INDEX 语句
SHOW {INDEX | INDEXES | KEYS}
{FROM | IN} tbl_name
[{FROM | IN} db_name]
[WHERE expr]
SHOW INDEX返回 table 索引信息。格式类似于 ODBC 中SQLStatistics
调用的格式。该语句要求对 table 中的任何列都具有一定的特权。
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:
*************************** 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:
tbl_name FROM db_name
语法的替代方法是* db_name
*。 * tbl_name
*。这两个语句是等效的:
SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;
可以提供WHERE
子句以使用更通用的条件选择行,如第 24.35 节,“ SHOW 语句的扩展”中所述。
SHOW INDEX返回以下字段:
Table
table 的名称。
Non_unique
如果索引不能包含重复项,则返回 0 ;如果可以,则返回 1.
Key_name
索引名称。如果索引是主键,则名称始终为PRIMARY
。
Seq_in_index
索引中的列序号,从 1 开始。
Column_name
列的名称。
Collation
列在索引中的排序方式。它可以具有值A
(升序)或NULL
(未排序)。
Cardinality
索引中唯一值数量的估计。要更新此数字,请运行ANALYZE TABLE或(对于MyISAM
个 table)myisamchk -a。
Cardinality
是根据存储为整数的统计信息进行计数的,因此即使对于小型 table,该值也不一定准确。基数越高,MySQL 在进行联接时使用索引的机会越大。
Sub_part
索引前缀。也就是说,如果仅对列进行部分索引,则为已索引字符的数目;如果对整个列进行索引,则为NULL
。
Note
前缀限制以字节为单位。但是,对于CREATE TABLE,ALTER TABLE和CREATE INDEX语句中的索引规范,前缀* length *被解释为非二进制字符串类型(CHAR,VARCHAR,TEXT)的字符数和二进制字符串类型(BINARY,VARBINARY,BLOB)的字节数。为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑到这一点。
有关索引前缀的其他信息,请参见第 8.3.4 节“列索引”和第 13.1.14 节“ CREATE INDEX 语句”。
Packed
指示密钥的包装方式。 NULL
,如果不是。
Null
如果该列可能包含NULL
个值,则包含YES
;否则,则包含''
。
Index_type
使用的索引方法(BTREE
,FULLTEXT
,HASH
,RTREE
)。
Comment
关于索引的信息未在其自己的列中描述,例如disabled
(如果禁用了索引)。
Index_comment
创建索引时,为索引提供的具有COMMENT
属性的任何 Comments。
有关 table 索引的信息也可以从INFORMATION_SCHEMA
STATISTICStable 中获得。参见第 24.24 节“ INFORMATION_SCHEMA STATISTICStable”。
您可以使用mysqlshow -k db_name tbl_name命令列出 table 的索引。