暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的SQL语句 - 数据库管理语句 - SHOW 语句 - SHOW INDEX 语句

林员外聊编程 2021-04-05
136

SHOW INDEX 语句

 

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 子句可用于更通用的条件选择。

 

SHOW INDEX 返回以下字段:

 

 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 TABLEALTER TABLE CREATE INDEX 语句中索引规范的前缀长度被解释为非二进制字符串类型(CHARVARCHARTEXT)的字符数和二进制字符串类型(BINARYVARBINARYBLOB)的字节数。当为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑这一点。

 

 Packed

 

指示索引的压缩方式。如果不是,则为 NULL

 

 Null

 

如果列可能包含 NULL 值,则包含 YES;否则为 ''

 

 Index_type

 

使用的索引方法(BTREEFULLTEXTHASHRTREE)。

 

 Comment

 

索引未在其自己的列中描述的信息,例如如果索引被禁用,则为 disabled

 

 Index_comment

 

创建索引时,使用 COMMENT 属性为索引提供的注释。

 

 Visible

 

索引对优化器是否可见。

 

 Expression

 

MySQL 8.0.13 及更高版本支持函数索引,它同时影响 Column_name Expression 列:

 

 对于非函数索引,Column_name 表示索引的列,Expression 为空。

 

 对于函数索引,Column_name 列为 NULLExpression 表示索引的表达式。

 

关于表索引的信息也可以从 INFORMATION_SCHEMA STATISTICS 表中获得。有关隐藏索引的扩展信息只能使用 SHOW EXTENDED INDEX 获得;不能从 STATISTICS 表中获得。

 

还可以使用 mysqlshow -k db_name tbl_name 命令列出表的索引。

 

 

 

 

 

官方文档:

https://dev.mysql.com/doc/refman/8.0/en/show-index.html

 


文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论