如何查看表索引_mysql索引信息查询

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

查看 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
等高效类型,验证索引是否生效。

相关推荐