最常用方式是show index命令,可快速列出表中所有索引结构;也可用information_schema.statistics精确筛选、show create table查看创建语句、describe或explain辅助判断索引使用情况。

查看 MySQL 表的索引信息,最常用、最直接的方式是使用 SHOW INDEX 命令。它能快速列出表中所有索引的结构细节,包括主键、唯一索引、普通索引和全文索引等。
用 SHOW INDEX 查看索引(推荐首选)
这是开发和运维中最常用的命令,语法简洁,结果直观:
-
基本写法:先切换数据库,再查索引
USE mydb;
SHOW INDEX FROM users; -
跨库写法(不需 USE):
SHOW INDEX FROM users FROM mydb; - 注意:SHOW KEYS 是 SHOW INDEX 的完全同义词,效果一致,可互换使用。
通过 INFORMATION_SCHEMA.STATISTICS 精确筛选
适合需要编程调用、批量分析或按条件过滤的场景,比如查找某列上有哪些索引、检查重复索引:
- 查询指定表的所有索引列:
SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME, SEQ_IN_INDEX, INDEX_TYPE
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'mydb' AND TABLE_NAME = 'users'; - 查找包含 email 字段的所有索引:
WHERE COLUMN_NAME = 'email' AND TABLE_SCHEMA = 'mydb'; - 该方式支持 JOIN 和聚合,适合写成监控脚本或自动化巡检。
用 SHOW CREATE TABLE 查看索引定义语句
如果你想确认索引是怎么创建的(比如前缀长度、是否唯一、注释等),这个命令会返回建表时的完整 SQL:
- 执行:
SHOW CREATE TABLE users; - 输出中会看到类似:
PRIMARY KEY (`id`),
KEY `idx_email` (`email`),
UNIQUE KEY `uk_phone` (`phone`(11))
其中uk_phone后面的(11)表示对 phone 字段前 11 个字符建立前缀索引。
辅助方式:DESCRIBE 和 EXPLAIN
它们不直接列出索引,但能快速判断字段是否有索引,以及查询是否实际用到了索引:
-
DESCRIBE users; 或 SHOW COLUMNS FROM users;
观察Key列:PRI(主键)、UNI(唯一索引)、MUL(普通索引)表示对应字段参与了索引。 -
EXPLAIN SELECT * FROM users WHERE email = 'a@b.com';
重点看key字段是否显示索引名,type是否为ref/range等高效类型,验证索引是否生效。










