MySQL 显示索引

2025年3月17日 | 阅读 3 分钟

我们可以使用 Show Indexes 语句来获取表的索引信息。该语句可以这样写:

在上面的语法中,我们可以看到,如果我们想获取表的索引,需要在 FROM 关键字后面指定 table_name。成功执行语句后,它将在当前数据库中返回表的索引信息。

如果我们想获取不同数据库中的表索引信息,或者要获取当前未连接的数据库的索引信息,MySQL 允许我们在 Show Indexes 语句中指定数据库名称。以下语句解释得更清楚:

上面的语句也可以写成:

注意:请注意,Index 和 Keys 都是 Indexes 的同义词,IN 是 FROM 关键字的同义词。因此,我们也可以使用这些同义词来编写 Show Indexes 语句,如下所示:

或,

SHOW INDEX 查询返回以下字段/信息:

Table: 包含表的名称。

Non_unique: 如果索引包含重复项,则返回 1。否则,返回 0。

Key_name: 索引的名称。如果表包含主键,则索引名称始终为 PRIMARY。

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

Column_name: 包含列的名称。

Collation: 提供有关列在索引中如何排序的信息。它包含值,其中 A 表示升序,D 表示降序,Null 表示未排序。

Cardinality: 提供索引表中唯一值的估计数量,较高的基数表示 MySQL 使用索引的可能性更大。

Sub_part: 索引的前缀。如果表的所有列都已索引,则它具有 NULL 值。当列被部分索引时,它将返回被索引字符的数量。

Packed: 指示键是如何打包的。否则,它返回 NULL。

NULL: 如果列没有 NULL 值,则包含 空格;否则,返回 YES。

Index_type: 包含索引方法的名称,如 BTREE、HASH、RTREE、FULLTEXT 等。

Comment: 当索引信息未在其列中描述时,它会包含索引信息。例如,当索引被禁用时,它会返回 disabled。

Index_column: 当您使用 comment 属性创建索引时,它包含指定索引的注释。

Visible: 如果索引对查询优化器可见,则包含 YES;否则,包含 NO。

Expression: MySQL 8.0 支持 函数键部分,它们会影响 expressioncolumn_name 列。我们可以通过以下几点更清楚地理解它:

  • 对于函数部分,expression 列表示键部分的表达式,column_name 列表示 NULL。
  • 对于非函数部分,expression 表示 NULL,column_name 表示被键部分索引的列。

MySQL SHOW INDEX 示例

在这里,我们将创建一个名为 student_info 的表,该表包含学生 ID、姓名、年龄、手机号码和电子邮件详细信息。执行以下命令来创建表:

接下来,我们通过以下命令在此表上创建索引:

现在,执行以下命令,它将返回 student_info 表的所有索引信息:

我们将获得以下输出:

MySQL Show Indexes

过滤索引信息

我们可以使用 where 子句 来过滤索引信息。可以使用以下语句来过滤索引信息:

示例

如果您只想获取 student_info 表的 不可见 索引,请执行以下命令:

它将提供以下输出

MySQL Show Indexes


下一主题MySQL UNIQUE INDEX