如何查看索引信息_mysql索引结构查询

11次阅读

mysql中查看索引信息有三类方法:1. SHOW INDEX FROM table_name 查完整详情;2. 查询 INFORMATION_SCHEMA.STATISTICS 表支持条件筛选;3. DESCRIBE table_name 快速识别字段索引类型。

如何查看索引信息_mysql索引结构查询

在 MySQL 中查看索引信息,核心是获取表上已建索引的名称、字段、类型、唯一性等元数据。不同命令侧重点略有不同,下面按实用场景分三类说明。

查完整索引详情:用 SHOW INDEX

这是最常用、最直接的方式,适合快速确认索引是否存在、是否覆盖预期列、是否唯一等。

  • 执行 SHOW INDEX FROM table_name; 或等价写法 SHOW KEYS FROM table_name;
  • 返回字段关键含义:
      • Key_name:索引名(PRIMARY 表示主键索引)
      • Column_name:该索引包含的列名(组合索引会有多行)
      • Seq_in_index:列在索引中的顺序(1 是最左列)
      • Non_unique:0 表示唯一索引(含主键),1 表示允许重复
      • Index_type:通常是 BTREE(InnoDB 默认),也可能是 FULLTEXT 或 SPATIAL

查指定库表的索引(支持条件筛选):查 INFORMATION_SCHEMA.STATISTICS

适合脚本化查询或跨多个表批量检查,比如想查某个数据库下所有带 “user_id” 的索引。

  • SQL 示例:
    select TABLE_NAME, INDEX_NAME, COLUMN_NAME, NON_UNIQUE, INDEX_TYPE
    FROM information_schema.STATISTICS
    WHERE table_schema = ‘your_db_name’
    AND table_name = ‘your_table_name’
    ORDER BY INDEX_NAME, SEQ_IN_INDEX;
  • 注意:table_schema 必须准确填写数据库名,区分大小写(取决于系统配置);
    若不确定当前库名,可用 SELECT database(); 先确认。

快速看结构是否带索引:用 DESCRIBE / DESC

不显示索引细节,但能一眼看出哪些字段有索引标记,适合开发时快速扫表结构。

  • 执行 DESCRIBE table_name; 或简写 DESC table_name;
  • 结果中 Key 列的值含义:
      • PRI:主键索引
      • UNI:唯一索引
      • MUL:普通索引(允许重复,包括组合索引中非最左列)
      • 空:无索引
  • 局限:无法区分单列索引和组合索引里的中间列,也不显示索引名和类型,仅作初步判断。

索引结构本身(如 B+Tree)不对外暴露物理布局,但可通过 EXPLaiN SELECT … 观察查询是否命中索引、是否用到覆盖索引、是否发生回表等行为,这是验证索引是否生效的关键手段。

text=ZqhQzanResources