#### 13.7.7.22 SHOW INDEX 语句

[](<>)[](<>)[](<>)

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

[`显示索引`](show-index.html)返回表索引信息。格式类似于`SQL统计`调用 ODBC。此语句需要表中任何列的某些特权。

```
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`* 从 *`数据库名称`*`语法是*`数据库名称`*.*`tbl_name`*.这两个语句是等价的：

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

可选的`扩展`关键字导致输出包含有关 MySQL 内部使用且用户无法访问的隐藏索引的信息。

这`在哪里`可以给出子句以使用更一般的条件选择行，如中所述[第 26.8 节，“SHOW 语句的扩展”](extended-show.html).

[`显示索引`](show-index.html)返回以下字段：

-   `桌子`

    表的名称。

-   `非唯一`

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

-   `键名`

    索引的名称。如果索引是主键，则名称总是`基本的`.

-   `Seq_in_index`

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

-   `列名`

    列名称。另见描述`表达`柱子。

-   `整理`

    [](<>)

    列在索引中的排序方式。这可以有值`一种`（上升），`D`（下降），或`空值`（未排序）。

-   `基数`

    [](<>)[](<>)

    对索引中唯一值数量的估计。要更新此号码，请运行[`分析表`](analyze-table.html)或（对于`MyISAM`表）[**myisamchk -a**](myisamchk.html).

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

-   `子部分`

    索引前缀。也就是说，如果列仅被部分索引，则索引字符的数量，`空值`如果整个列都被索引。

    笔记

    字首*限制*以字节为单位。但是，前缀*长度*对于索引规格[`创建表`](create-table.html),[`更改表`](alter-table.html)， 和[`创建索引`](create-index.html)语句被解释为非二进制字符串类型的字符数 ([`字符`](char.html),[`VARCHAR`](char.html),[`文本`](blob.html)) 和二进制字符串类型的字节数 ([`二进制`](binary-varbinary.html),[`变量`](binary-varbinary.html),[`斑点`](blob.html)）。在为使用多字节字符集的非二进制字符串列指定前缀长度时，请考虑到这一点。

    有关索引前缀的更多信息，请参阅[第 8.3.5 节，“列索引”](column-indexes.html)， 和[第 13.1.15 节，“CREATE INDEX 语句”](create-index.html).

-   `包装好的`

    指示如何打包密钥。`空值`如果不是。

-   `空值`

    包含`是的`如果该列可能包含`空值`价值观和`''`如果不。

-   `索引类型`

    使用的索引方法（`BTREE`,`全文`,`哈希`,`RTREE`）。

-   `评论`

    未在其自己的列中描述的索引的信息，例如`禁用`如果索引被禁用。

-   `Index_comment`

    为索引提供的任何评论都带有`评论`创建索引时的属性。

-   `可见的`

    索引是否对优化器可见。看[第 8.3.12 节，“不可见索引”](invisible-indexes.html).

-   `表达`

    MySQL 8.0.13 及更高版本支持功能关键部分（请参阅[功能关键部件](create-index.html#create-index-functional-key-parts))，这会影响到`列名`和`表达`列：

    -   对于非功能性关键部件，`列名`表示由键部分索引的列，并且`表达`是`空值`.

    -   对于功能键部分，`列名`列是`空值`和`表达`表示关键部分的表达式。

    有关表索引的信息也可从`INFORMATION_SCHEMA` [`统计数据`](information-schema-statistics-table.html)桌子。看[第 26.3.34 节，“信息\_SCHEMA 统计表”](information-schema-statistics-table.html).有关隐藏索引的扩展信息只能使用`显示扩展索引`;它不能从[`统计数据`](information-schema-statistics-table.html)桌子。

    您可以使用[**mysqlshow -k*`数据库名称`* *`tbl_name`***](mysqlshow.html)命令。
