MySQL中查看索引信息最常用方法是SHOW INDEX语句和查询INFORMATION_SCHEMA.STATISTICS表;前者快速查看单表索引详情,后者支持跨库筛选;EXPLAIN用于验证索引是否生效,结合索引大小、基数等可全面评估索引设计合理性。
在 MySQL 中查看索引信息,最常用且直接的方式是使用 SHOW INDEX 语句或查询 INFORMATION_SCHEMA.STATISTICS 系统表。不同方式适用于不同场景,下面分几种实用方法说明。
这是最简单快捷的方法,适合快速确认某张表有哪些索引、字段顺序、是否唯一等基础信息。
SHOW INDEX FROM 表名 [FROM 数据库名];
SHOW INDEX FROM users; 或 SHOW INDEX FROM users FROM mydb;
当需要跨库查索引、按列名过滤、或写脚本批量分析时,推荐查系统表,更灵活。
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 判断完整结构SHOW INDEX 只告诉你“有什么索引”,而 EXPLAIN 能告诉你“查询时用了哪个索引”。
EXPLAIN SELECT * FROM users WHERE email = 'a@b.com';
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 通常自动收集,但大表手动触发更准)SHOW INDEX 结果中的 Cardinality 列,数值越大说明该列区分度越高,越适合作为索引首列