- SHOW INDEX 返回表索引信息。格式类似于 ODBC 中的 SQLStatistics 调用。此语句需要对表中的任何列具有一定的权限。
语法
SHOW [EXTENDED] {INDEX | INDEXES | KEYS}
{FROM | IN} <tbl_name>
[{FROM | IN} db_name]
[WHERE expr]
参数 |
说明 |
<tbl_name> |
数据表名 |
db_name |
数据库名称 |
expr |
where 语句的条件表达式 |
[EXTENDED] |
可选的关键字,导致输出包含有关 MySQL 内部使用且用户无法访问的隐藏索引的信息。 |
示例
SHOW INDEX FROM student;
*************************** 1. row
***************************
Table: student
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
示例
SHOW KEYS FROM student;
*************************** 1.
row ***************************
Table: student
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
参数 |
描述 |
Table |
表的名称 |
Non_unique |
如果索引不能包含重复项,则为 0,如果可以,则为 1。 |
Key_name |
索引的名称。如果索引是主键,名称总是 PRIMARY |
Seq_in_index |
索引中的列序号,从1开始 |
Column_name |
数据列名称 |
Collation |
列在索引中的排序方式。这可以具有值 A(升序)、D(降序)或 NULL(未排序)。 |
Cardinality |
索引中唯一值数量的估计。要更新此数字,请运行 ANALYZE TABLE 或(对于 MyISAM 表)myisamchk -a。 基数是根据存储为整数的统计数据计算的,因此即使对于小表,该值也不一定准确。基数越高,MySQL 在进行连接时使用索引的机会就越大。 |
Sub_part |
索引前缀。也就是说,如果列仅被部分索引,则为索引字符数,如果整个列都被索引,则为 NULL。
前缀限制以字节为单位。但是,CREATE TABLE、ALTER TABLE 和 CREATE INDEX 语句中索引规范的前缀长度被解释为非二进制字符串类型(CHAR、VARCHAR、TEXT)的字符数和二进制字符串类型(BINARY、VARBINARY、BLOB)的字节数.在为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑这一点 |
Packed |
指示密钥的打包方式。如果不是,则为 NULL。 |
Null |
如果列可能包含 NULL 值,则包含 YES,否则包含 ''。 |
Index_type |
使用的索引方法(BTREE、FULLTEXT、HASH、RTREE)。 |
Comment |
未在其自己的列中描述的有关索引的信息,例如如果索引被禁用则禁用。 |
Index_comment |
创建索引时使用 COMMENT 属性为索引提供的任何注释 |
Visible |
索引是否对优化器可见。 |
Expression |
MySQL 8.0.13 及更高版本支持功能键部分,这会同时影响 Column_name 和 Expression 列:
|
来自 <https://dev.mysql.com/doc/refman/8.0/en/show-index.html>