MySQL如何查看所有索引
在MySQL中,查看所有索引最直接的方法是使用SHOW INDEX命令,该命令可以显示指定表中的所有索引信息,包括索引名称、字段、类型等关键数据,掌握索引查看技巧对于数据库性能优化和结构管理至关重要,下面将详细介绍几种常用方法及其应用场景。
使用SHOW INDEX命令查看索引
SHOW INDEX是MySQL内置的专用命令,能够提供最全面的索引信息,基本语法如下:

SHOW INDEX FROM 表名;
查看users表的索引:
SHOW INDEX FROM users;
执行后将返回包含以下关键字段的结果集:
- Table:索引所属的表名
- Non_unique:索引是否允许重复值(0表示唯一索引,1表示非唯一索引)
- Key_name:索引名称(主键索引名称为PRIMARY)
- Seq_in_index:字段在索引中的位置(从1开始)
- Column_name:索引涉及的字段名
- Collation:字段在索引中的排序方式(A表示升序,NULL表示未排序)
- Cardinality:索引中唯一值的估计数量(优化查询的重要参考)
- Index_type:索引类型(如BTREE、HASH、FULLTEXT等)
通过INFORMATION_SCHEMA系统数据库查询
MySQL的INFORMATION_SCHEMA数据库存储了所有数据库对象的元数据,通过查询STATISTICS表可以获取更灵活的索引信息:
SELECT
TABLE_NAME,
INDEX_NAME,
COLUMN_NAME,
SEQ_IN_INDEX,
INDEX_TYPE,
NON_UNIQUE
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = '数据库名'
AND TABLE_NAME = '表名'
ORDER BY INDEX_NAME, SEQ_IN_INDEX;
这种方法特别适合需要跨表分析索引或批量导出索引信息的场景。
使用DESC命令快速查看
虽然DESC(或DESCRIBE)命令主要用于查看表结构,但也会显示索引的基本信息:
DESC 表名;
结果中的Key字段会标识索引类型:
- PRI:主键索引
- UNI:唯一索引
- MUL:普通索引
利用SHOW CREATE TABLE查看索引定义
此命令可以显示完整的建表语句,其中包含所有索引的创建定义:
SHOW CREATE TABLE 表名;
输出结果中的CREATE TABLE语句会明确列出:
- PRIMARY KEY:主键索引
- UNIQUE KEY:唯一索引
- KEY或INDEX:普通索引
- FULLTEXT:全文索引(如适用)
索引查看的实用技巧
-
筛选特定类型索引:
SHOW INDEX FROM users WHERE Non_unique = 0; -- 仅查看唯一索引
-
分析索引使用效率: 结合
Cardinality字段和表行数对比,可以判断索引的选择性,选择性越高(Cardinality接近行数),索引效果通常越好。 -
检查冗余索引: 通过对比索引字段和顺序,识别功能重复的索引,减少存储开销和维护成本。
注意事项
- 权限要求:执行索引查看命令需要用户对目标表至少具有
SELECT权限 - 存储引擎差异:不同存储引擎(如InnoDB、MyISAM)支持的索引类型和特性可能不同
- 性能影响:在大型生产环境中,查询
INFORMATION_SCHEMA可能对性能有轻微影响,建议在低峰期执行
熟练掌握SHOW INDEX命令是查看MySQL索引的核心技能,而INFORMATION_SCHEMA查询提供了更强大的分析能力,定期检查索引结构有助于发现缺失索引、冗余索引和低效索引,从而优化查询性能,建议将索引检查纳入日常数据库维护流程,结合EXPLAIN命令分析查询执行计划,构建完整的数据库性能优化体系。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/17621.html发布于:2026-09-18





