1.介绍

  • MySQL 索引:是帮助 MySQL 高效获取数据的一种数据结构。所以,索引的本质就是数据结构!
  • 在表数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式指向数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

2.分类

  • 按照功能分类

    • 普通索引:最基本的索引,没有任何限制。
    • 唯一索引:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值组合必须唯一。
    • 主键索引:一种特殊的唯一索引,不允许有空值。在建表时有主键列同时创建主键索引。
    • 联合索引:顾名思义,就是将单列索引进行组合。
    • 外键索引:只有 InnoDB 引擎支持外键索引,用来保证数据的一致性、完整性和实现级联操作。
    • 全文索引:快速匹配全部文档的方式。InnoDB 引擎 5.6 版本后才支持全文索引。MEMORY 引擎不支持。
  • 按照结构分类

    • BTree 索引:MySQL 使用最频繁的一个索引数据结构,是 InnoDB 和 MyISAM 存储引擎默认的索引类型,底层基于 B+Tree 数据结构。
    • Hash 索引:MySQL 中 Memory 存储引擎默认支持的索引类型。