3.2 索引类别
MySQL 中的索引可以从多个维度进行系统分类。理解这些分类有助于在不同场景下选择正确的索引类型,优化查询性能。以下从数据结构、物理存储、逻辑约束、可见性四个主要维度,对 MySQL 索引进行全方位拆解。🌳 一、按数据结构划分索引的底层数据结构决定了查找、范围扫描等操作的效率特性。索引类型底层数据结构支持引擎特点适用场景B+ 树索引B+ 树InnoDB (默认)、MyISAM、Memory (可选)等值查询 O(log N),范围查询极快(叶子链表),有序,通用绝大多数查询:=、、、BETWEEN、ORDER BY、GROUP BY哈希索引哈希表Memory (显式USING HASH)、InnoDB (自适应哈希索引 AHI,自动)、TempTable (内存临时表)等值查询 O(1) 极快,不支持范围查询,无序,易碰撞临时缓存、等值查找为主的场景(如会话表)全文索引倒排索引InnoDB (5.6+)、MyISAM、NDB专用于文本搜索,支持MATCH ... AGAINST,分词处理,支持相关性排序文章内容搜索、模糊文本匹配(替代低效的LIKE '%...%')空间索引R 树InnoDB、MyISAM用于几何数据类型(POINT,LINESTRING,POLYGON),支持空间包含、距离查询GIS 应用、地图位置查询倒排索引(全文)倒排列表InnoDB 内部词 → 文档ID 的映射全文检索重点:InnoDB 的常规用户索引都是 B+ 树,AHI 是内存中的辅助加速结构。Memory 引擎允许在创建索引时显式指定USING HASH或USING BTREE,而 InnoDB 用户无法手动创建哈希索引。💾 二、按物理存储(索引组织方式)划分这是 InnoDB 最核心的分类,直接关系到数据如何存放和访问。1. 聚簇索引 (Clustered Index)本质:索引的