如何在mysql中查看索引信息_mysql索引查看方式

来源:这里教程网 时间:2026-02-28 20:35:17 作者:

在 MySQL 中查看索引信息,最常用且直接的方式是使用

SHOW INDEX
语句或查询
INFORMATION_SCHEMA.STATISTICS
系统表。不同方式适用于不同场景,下面分几种实用方法说明。

使用 SHOW INDEX 查看表的索引详情

这是最简单快捷的方法,适合快速确认某张表有哪些索引、字段顺序、是否唯一等基础信息。

语法:
SHOW INDEX FROM 表名 [FROM 数据库名];
例如:
SHOW INDEX FROM users;
SHOW INDEX FROM users FROM mydb;
返回结果中关键字段说明:
Table:表名
Key_name:索引名称(PRIMARY 表示主键,自定义名如 idx_email)
Column_name:索引包含的列名(注意顺序)
Seq_in_index:该列在联合索引中的位置(1 表示第一列)
Non_unique:0 表示唯一索引,1 表示非唯一
Index_type:BTREE、HASH(Memory 引擎)、FULLTEXT 等

通过 INFORMATION_SCHEMA 查询索引(支持条件筛选)

当需要跨库查索引、按列名过滤、或写脚本批量分析时,推荐查系统表,更灵活。

基本查询:
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = '数据库名' AND TABLE_NAME = '表名';
只看非主键的普通索引:
WHERE INDEX_NAME != 'PRIMARY'
查某个字段参与了哪些索引:
AND COLUMN_NAME = 'email'
注意:
SEQ_IN_INDEX > 1
表示是联合索引的后续列,需结合
INDEX_NAME
SEQ_IN_INDEX
判断完整结构

用 EXPLAIN 辅助验证索引是否生效

SHOW INDEX
只告诉你“有什么索引”,而
EXPLAIN
能告诉你“查询时用了哪个索引”。

执行:
EXPLAIN SELECT * FROM users WHERE email = 'a@b.com';
重点关注字段:
key:实际使用的索引名(NULL 表示未命中)
key_len:索引使用长度(可推断是否用全联合索引)
possible_keys:可能用到的索引列表
配合
SHOW INDEX
结果,能判断索引设计是否合理(比如联合索引 (a,b,c),WHERE a=1 AND b=2 会用上,但 WHERE b=2 就不会)

查看索引大小与统计信息(高级用途)

对于性能调优,有时还需知道索引占了多少空间、数据分布是否均匀。

查索引大小(近似值):
SELECT DATA_LENGTH, INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名';
更新索引统计(影响优化器选择):
ANALYZE TABLE 表名;
(InnoDB 通常自动收集,但大表手动触发更准)
查看索引基数(Cardinality):
SHOW INDEX
结果中的 Cardinality 列,数值越大说明该列区分度越高,越适合作为索引首列

相关推荐