1. 基本用法:

查看当前数据库中某张表的索引信息
SHOW INDEX FROM your_table_name;
使用格式化方式输出结果,阅读起来更直观(适用于 MySQL 命令行)
SHOW INDEX FROM your_table_nameG
查看指定数据库下某张数据表的索引
SHOW INDEX FROM your_table_name FROM your_database_name;
2. 结果解读:
查询结果中的每一行,通常都表示索引中的一个字段。
如果一个索引由多个字段组成,也就是常说的联合索引或复合索引,那么你会看到多行拥有相同的 `Key_name`,但 `Seq_in_index` 和 `Column_name` 的值各不相同。
其中需要重点关注 `Cardinality`:它可以帮助你比较不同 MySQL 索引的区分度。比如,性别字段的索引基数可能只有 `2`(男/女),这样的索引优化效果通常有限;而用户名这类高区分度字段,如果索引基数接近数据表总行数,索引查询性能通常会更好。
`Non_unique` 与 `Key_name` 字段结合起来看,可以快速判断哪些是唯一索引、唯一约束,哪些是普通索引。
示例分析
根据您提供的 `tb_stu_info2` 查询输出:
SHOW INDEX FROM tb_stu_info2G
可以分析出以下几点:
1. 索引类型:这是一个唯一索引(`Non_unique: 0`),说明创建该索引时使用了 `UNIQUE` 关键字。
2. 索引名称:该索引名称为 `height`(`Key_name: height`)。
3. 索引字段:这是一个单字段索引(`Seq_in_index: 1`),建立在 `height` 字段上(`Column_name: height`)。
4. 排序方式:该索引按照升序存储(`Collation: A`)。
5. 空值约束:`height` 字段允许出现 NULL 值(`Null: YES`)。
6. 索引结构:底层采用 B+Tree 结构实现(`Index_type: BTREE`),这是 MySQL 中最常见的索引类型之一。
7. 当前状态:`Cardinality: 0` 说明该表可能暂时没有数据,或者索引统计信息尚未更新。
