Documentation Home

13.7.5.23 SHOW INDEX 语句

SHOW {INDEX | INDEXES | KEYS}
    {FROM | IN} tbl_name
    [{FROM | IN} db_name]
    [WHERE expr]

SHOW INDEX返回表索引信息。格式类似于 SQLStatisticsODBC 中的调用格式。此语句需要对表中的任何列具有一定的权限。

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: 4188
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:

语法 的替代方法是. . 这两个语句是等价的: tbl_name FROM db_namedb_nametbl_name

SHOW INDEX FROM mytable FROM mydb;
SHOW INDEX FROM mydb.mytable;

WHERE子句可以使用更一般的条件来选择行,如 第 21.9 节“SHOW 语句的扩展”中所讨论的。

SHOW INDEX返回以下字段:

  • Table

    表的名称。

  • Non_unique

    如果索引不能包含重复项,则为 0,如果可以,则为 1。

  • Key_name

    索引的名称。如果索引是主键,则名称始终是PRIMARY

  • Seq_in_index

    索引中的列序号,从 1 开始。

  • Column_name

    列的名称。

  • Collation

    列在索引中的排序方式。这可以有值 A(升序)或NULL (未排序)。

  • Cardinality

    索引中唯一值数量的估计。要更新此数字,请运行ANALYZE TABLE或(对于MyISAM表) myisamchk -a

    Cardinality基于存储为整数的统计信息进行计数,因此即使对于小表,该值也不一定准确。基数越高,MySQL 在进行连接时使用索引的机会就越大。

  • Sub_part

    索引前缀。也就是说,如果列仅被部分索引,则索引字符数, NULL如果整个列被索引。

    笔记

    前缀限制以字节为单位。但是,、 和语句中索引规范的前缀长度被解释为非二进制字符串类型( 、 、 )的字符数和二进制字符串类型( 、 、 ) 的 字节数。在为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑这一点。 CREATE TABLEALTER TABLECREATE INDEXCHARVARCHARTEXTBINARYVARBINARYBLOB

    有关索引前缀的其他信息,请参阅 第 8.3.4 节,“列索引”第 13.1.13 节,“CREATE INDEX 语句”

  • Packed

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

  • Null

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

  • Index_type

    使用的索引方法 ( BTREE, FULLTEXT, HASH, RTREE)。

  • Comment

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

  • Index_comment

    COMMENT创建索引时为具有属性的 索引提供的任何注释 。

有关表索引的信息也可从 INFORMATION_SCHEMA STATISTICS表中获得。请参阅 第 21.3.22 节,“INFORMATION_SCHEMA 统计表”

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