15.7.7.23 显示索引语句
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
返回以下字段:
-
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
的值是基于存储的整数统计,因此对于小表的值可能不准确。Cardinality 值越高,MySQL 在执行 join 操作时使用索引的可能性越高。 -
Sub_part
索引前缀,即列的部分索引,如果列只部分索引,否则为
NULL
。Note前缀limits以字节为单位。然而,对于
CREATE TABLE
、ALTER TABLE
和CREATE INDEX
语句中的索引指定,lengths为非二进制字符串类型(CHAR
、VARCHAR
、TEXT
)的字符数,为二进制字符串类型(BINARY
、VARBINARY
、BLOB
)的字节数。在指定非二进制字符串列的前缀长度时,需要考虑字符集的多字节特性。关于索引前缀的详细信息,请参见第10.3.5节,“列索引”和第15.1.15节,“CREATE INDEX 语句”。
-
Packed
表示键的打包方式。
NULL
如果不是。 -
Null
包含
YES
如果列可能包含NULL
值,并且''
如果不。 -
Index_type
索引方法(
BTREE
、FULLTEXT
、HASH
、RTREE
)。 -
Comment
索引的其他信息,不在其自己的列中,如
disabled
如果索引被禁用。 -
Index_comment
索引的注释,使用
COMMENT
属性创建索引时提供的注释。 -
Visible
索引是否可见于优化器。请参见第10.3.12节,“不可见索引”。
-
Expression
MySQL 支持函数式键部分(见Functional Key Parts);这影响了
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节,“生成不可见主键”。