查看索引(SHOW INDEX)

Exisi 2023-03-09 13:14:22
Categories: Tags:
  • 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 TABLEALTER TABLE CREATE INDEX 语句中索引规范的前缀长度被解释为非二进制字符串类型(CHARVARCHARTEXT)的字符数和二进制字符串类型(BINARYVARBINARYBLOB)的字节数.在为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑这一点

Packed

指示密钥的打包方式。如果不是,则为 NULL

Null

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

Index_type

使用的索引方法(BTREEFULLTEXTHASHRTREE)。

Comment

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

Index_comment

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

Visible

索引是否对优化器可见。

Expression

MySQL 8.0.13 及更高版本支持功能键部分,这会同时影响 Column_name Expression 列:

  • 对于非功能性关键部分,Column_name 表示由关键部分索引的列,Expression NULL
  • 对于功能键部分,Column_name列为NULLExpression表示键部分的表达式

 

 

 

来自 <https://dev.mysql.com/doc/refman/8.0/en/show-index.html>