Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL索引类型

MySQL有5种索引类型及其特点详解

作者:旷野说

MySQL中的索引类型多种多样,每种索引类型都有其特定的使用场景和优势,这篇文章主要介绍了MySQL有5种索引类型及其特点的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

MySQL(尤其是 InnoDB 引擎)支持多种索引类型,不同索引适用于不同场景。以下是 MySQL 中常见的索引类型及其特点,按逻辑分类物理结构两个维度说明:

一、按逻辑用途分类(常用)

1.主键索引(Primary Key)

2.唯一索引(Unique Index)

3.普通索引(Secondary Index / Normal Index)

4.组合索引(Composite Index / 联合索引)

5.前缀索引(Prefix Index)

二、按物理结构分类(InnoDB)

1.聚簇索引(Clustered Index)

2.二级索引(Secondary Index)

三、特殊索引类型(特定场景)

1.全文索引(Full-Text Index)

2.空间索引(SPATIAL Index)

四、不推荐或已废弃的索引

索引类型说明
HASH 索引Memory 引擎支持,InnoDB 不支持(但自适应哈希索引 AHI 是内部优化)
RTREE 索引旧版 MyISAM 用,现已被 SPATIAL 取代

💡 InnoDB 的 自适应哈希索引(Adaptive Hash Index, AHI) 是 InnoDB 自动为热点索引页构建的内存哈希结构,无需手动创建,可通过 SHOW ENGINE INNODB STATUS 查看。

五、索引设计黄金法则(电商场景重点)

  1. 主键自增:避免 UUID 导致聚簇索引频繁页分裂。
  2. 组合索引合理排序:高频过滤字段放前,范围查询字段放后(如 (user_id, create_time))。
  3. 避免冗余索引(a,b)(a) 同时存在是冗余的。
  4. 大字段慎建索引:如 description 字段,优先考虑前缀索引或异构存储(如 Elasticsearch)。
  5. 监控慢查询:用 EXPLAIN 分析是否命中索引,关注 type(最好 ref/range,避免 ALL)。

六、查看索引命令

-- 查看表索引
SHOW INDEX FROM table_name;

-- 查看执行计划
EXPLAIN SELECT * FROM orders WHERE user_id = 100;

-- 查看索引使用统计(MySQL 8.0+)
SELECT * FROM performance_schema.table_io_waits_summary_by_index_usage
WHERE object_schema = 'your_db' AND object_name = 'your_table';

总结

在电商开发中,主键索引 + 唯一索引 + 合理的组合索引 足以覆盖 95% 场景。

牢记:索引不是越多越好,而是越精准越好

到此这篇关于MySQL有5种索引类型及其特点的文章就介绍到这了,更多相关MySQL索引类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文