415 字
2 分钟
MySQL索引类型有哪些
MySQL 索引类型有哪些
按数据结构分
分为
- B-Tree 索引
- Hash 索引
- Full-text 索引
创建表的时候,InnoDB 存储引擎会根据不同的场景选择不同的列作为索引:
- 有主键:会使用主键作为聚簇索引的索引键
- 没有主键: 选择第一个不包含 NULL 值的唯一列作为聚簇索引的索引键
- 上面两个都没有的情况下,InnoDB 会自动生成一个隐式自增 id 列作为聚簇索引的索引键。
其他索引都属于辅助索引,也就是非聚簇索引或者二级索引。
按物理存储分
分为
- 聚簇索引(主键索引)
- 二级索引(辅助索引)
按字段特性分
- 主键索引
- 唯一索引
- 普通索引
- 前缀索引
主键索引是唯一的,且不允许为 NULL。每个表只能有一个主键索引。
按字段个数分
- 单列索引
- 联合索引
按数据结构分
- B+树索引
- 哈希索引
- 倒排索引(Full-text 索引)
- R-树索引 (多维树空间)
从 InnoDB b+树索引来看,分为聚簇索引和非聚簇索引 聚簇索引也就是主键索引,叶子节点存储整行的数据,非叶子节点存储主键值和指向子节点的指针。 非聚簇索引叶子节点存储主键,非叶子节点存储主键值和指向子节点的指针。 因此,非聚簇索引查询需要回表查询
从索引性质看
有 普通索引 主键索引 唯一索引 联合索引 全文索引 空间索引