跳转至

MySQL 索引类型及应用

一、按数据结构分

B+ 树索引

最常用,InnoDB 默认。

Hash 索引

Memory 引擎支持,等值查询 O(1),不支持范围。

全文索引

倒排索引,用于文本搜索。

二、按物理存储分

聚簇索引

叶子节点存整行数据。一张表一个(主键)。

二级索引(非聚簇)

叶子节点存主键值。查二级索引需要回表。

三、按字段分

主键索引

PRIMARY KEY,聚簇索引。

唯一索引

UNIQUE,值唯一。

普通索引

INDEX。

联合索引

多字段:(a, b, c)。最左前缀原则。

四、适用场景

查询 索引
WHERE id = 1 主键
WHERE name = 'a' 普通索引
WHERE age > 18 B+ 树(范围)
WHERE a = 1 AND b = 2 联合索引
ORDER BY 联合索引
LIKE 'xxx%' B+ 树
LIKE '%xxx' 不走索引

五、注意

  • 索引不是越多越好,写时要维护。
  • 联合索引遵守最左前缀。
  • 函数操作会让索引失效。

高频追问

聚簇索引 = 数据和索引存在一起,InnoDB 一张表只能有一个。