«

MySQL查看表索引

时间:2026-10-20 07:06     作者:emer     分类: 无


MySQL查看表索引

引言

排查慢查询、判断索引是否生效前,先要搞清楚一张表上到底建了哪些索引、每个索引包含哪些列、是不是唯一索引。SHOW INDEX和information_schema都能查,前者直观,后者适合脚本批量统计。

SHOW INDEX查看索引

SHOW INDEX FROM users;

列出users表全部索引,Key_name是索引名,Column_name是索引列,Seq_in_index是列在联合索引里的顺序,Non_unique为0表示唯一索引。

重点字段含义

建表语句里看索引

SHOW CREATE TABLE users\G

直接看完整建表语句,KEY和UNIQUE KEY就是索引定义,适合快速人工核对。

information_schema批量查

SELECT table_name, index_name, column_name, seq_in_index, non_unique
FROM information_schema.statistics
WHERE table_schema = 'mydb'
ORDER BY table_name, index_name, seq_in_index;

一次性导出整库所有表的索引结构,做索引巡检和冗余分析。

查某列是否被索引覆盖

SELECT DISTINCT index_name FROM information_schema.statistics
WHERE table_schema='mydb' AND table_name='users' AND column_name='phone';

判断phone列有没有索引,决定查询能否走索引。

注意事项

总结

SHOW INDEX FROM表看索引明细,SHOW CREATE TABLE看定义,information_schema.statistics批量导出整库索引。重点关注索引名、列顺序、唯一性和基数,联合索引按最左前缀使用,建完索引务必用EXPLAIN验证是否真正命中,定期清理重复冗余索引,避免写放大。

标签: MySQL 数据库优化 show index 表索引 联合索引