文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


MySQL 8.4 参考手册  /  ...  /  SHOW INDEX 语句

15.7.7.23 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 子句可以用于使用更通用的条件选择行,如第 28.8 节 “SHOW 语句的扩展” 中所述。

SHOW INDEX 返回以下字段

  • 表的名称。

  • Non_unique

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

  • Key_name

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

  • Seq_in_index

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

  • Column_name

    列名。另请参阅 Expression 列的说明。

  • 排序规则

    索引中列的排序方式。此列可以取值 A(升序)、D(降序)或 NULL(未排序)。

  • 基数

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

    基数 是根据存储为整数的统计信息计算的,因此即使对于小表,该值也不一定准确。基数越高,MySQL 在执行连接时使用索引的可能性就越大。

  • 子部分

    索引前缀。也就是说,如果只对列的一部分进行索引,则为索引字符数,如果对整个列进行索引,则为 NULL

    注意

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

    有关索引前缀的更多信息,请参阅 第 10.3.5 节,“列索引”第 15.1.15 节,“CREATE INDEX 语句”

  • 打包

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

  • 如果列可以包含 NULL 值,则包含 YES,如果不包含,则包含 ''

  • 索引类型

    使用的索引方法(BTREEFULLTEXTHASHRTREE)。

  • 注释

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

  • 索引注释

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

  • 可见

    索引是否对优化器可见。请参阅 第 10.3.12 节,“不可见索引”

  • 表达式

    MySQL 支持函数键部分(请参阅 函数键部分);这会影响 Column_nameExpression

    • 对于非函数键部分,Column_name 指示由键部分索引的列,而 ExpressionNULL

    • 对于函数键部分,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 节,“生成的不可见主键”