MySQL 查看索引(图文教程)

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/

截止目前, 星球 内专栏累计输出 72w+ 字,讲解图 3103+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2400+ 小伙伴加入学习 ,欢迎点击围观

索引在数据库中扮演着至关重要的角色,它能显著提升数据查询的效率。然而,为了更好地管理和优化数据库,了解和查看现有的索引是非常重要的。本小节中,小哈将演示在 MySQL 中,要如何查看表的索引,包括使用 SHOW INDEX 语句、INFORMATION_SCHEMA 数据库以及图形化工具。

1. 使用 SHOW INDEX 语句查看索引

SHOW INDEX 语句是 MySQL 提供的一个非常便捷的工具,用于查看表中定义的索引。它可以显示表中所有索引的详细信息。

语法

SHOW INDEX FROM table_name;
  • table_name 是你要查看索引的表的名称。

示例

假设有一个名为 t_user 的表,使用以下语句查看该表的索引:

SHOW INDEX FROM t_user;

示例输出:

使用 SHOW INDEX 语句查看 MySQL 索引使用 SHOW INDEX 语句查看 MySQL 索引

输出字段解释

  • Table:索引所在的表。
  • Non_unique:是否唯一索引。0 表示唯一索引,1 表示非唯一索引。
  • Key_name:索引的名称。
  • Seq_in_index:列在索引中的序列号,从 1 开始。
  • Column_name:列名称。
  • Collation:列的排序方式。A 表示升序,NULL 表示未排序。
  • Cardinality:索引中唯一值的近似数目。可以用来估算表的大小。
  • Sub_part:如果是部分索引,则为索引的字符数。
  • Packed:指示关键字如何被压缩。NULL 表示没有压缩。
  • Null:如果列可以包含 NULL,则为 YES。
  • Index_type:索引使用的类型(例如 BTREE)。
  • Comment:索引的注释。
  • Index_comment:索引的附加信息。

2. 使用 INFORMATION_SCHEMA 查看索引

INFORMATION_SCHEMA 是 MySQL 提供的一个系统数据库,其中包含了关于数据库对象的信息。可以通过查询 INFORMATION_SCHEMA.STATISTICS 表来获取索引信息。

查询语法

SELECT 
    TABLE_NAME, 
    NON_UNIQUE, 
    INDEX_NAME, 
    SEQ_IN_INDEX, 
    COLUMN_NAME, 
    COLLATION, 
    CARDINALITY, 
    SUB_PART, 
    PACKED, 
    NULLABLE, 
    INDEX_TYPE, 
    COMMENT, 
    INDEX_COMMENT 
FROM 
    INFORMATION_SCHEMA.STATISTICS 
WHERE 
    TABLE_SCHEMA = 'database_name' 
    AND TABLE_NAME = 'table_name';
  • database_name 是数据库的名称。
  • table_name 是表的名称。

示例

假设要查看 t_user 表的索引,并且该表位于 test_db 数据库中,使用以下语句:

SELECT 
    TABLE_NAME, 
    NON_UNIQUE, 
    INDEX_NAME, 
    SEQ_IN_INDEX, 
    COLUMN_NAME, 
    COLLATION, 
    CARDINALITY, 
    SUB_PART, 
    PACKED, 
    NULLABLE, 
    INDEX_TYPE, 
    COMMENT, 
    INDEX_COMMENT 
FROM 
    INFORMATION_SCHEMA.STATISTICS 
WHERE 
    TABLE_SCHEMA = 'test_db' 
    AND TABLE_NAME = 't_user';

示例输出与 SHOW INDEX 类似,但可以在 SQL 查询中灵活使用,例如与其他查询组合,或者按特定条件过滤。

 INFORMATION_SCHEMA 查看 MySQL 索引INFORMATION_SCHEMA 查看 MySQL 索引

3. 使用图形化工具 Navicat 查看索引

除了通过命令行来查看索引,另外,也可以通过图形客户端来查看。这里演示一下,如何通过 Navicat 查看索引,如下图所示:

Navicat 查看 MySQL 索引Navicat 查看 MySQL 索引

在目标表上右键 | 设计表 | 索引 , 即可查看该表的所有索引。

结论

通过本文的介绍,我们了解了在 MySQL 中查看索引的多种方法。无论是使用 SHOW INDEX 语句、查询 INFORMATION_SCHEMA 数据库,还是通过图形化工具,都可以方便地查看表中的索引信息。这些方法不仅帮助我们理解和管理现有的索引,还能为数据库优化提供有力支持。在实际操作中,根据需求选择合适的方法,可以更高效地管理数据库索引。