MySQL索引有哪些类型

133 阅读1分钟

MySQL索引有哪些类型

数据结构维度

  • B+树索引:所有数据存储在叶子节点,复杂度为O(logn),适合范围查询,io次数少。
  • 哈希索引: 适合等值查询,不能范围/排序等查询,不发生hash冲突的情况下,检索效率比较高,一次到位。
  • 全文索引:MyISAMInnoDB中都支持使用全文索引,一般在文本类型char,text,varchar类型上创建,但使用很少。

物理存储维度

  • 聚集索引:聚集索引就是以主键创建的索引,在叶子节点存储的是表中的数据,查询为覆盖查询,不需要回表。
  • 二级索引:二级索引就是以非主键创建的索引,在叶子节点存储的是主键和索引列,可能需要回表。

逻辑维度

  • 主键索引:一种特殊的唯一索引,不允许有空值,主键就是聚集索引。
  • 普通索引:MySQL中基本索引类型,允许空值和重复值。
  • 联合索引:多个字段创建的索引,使用时遵循最左前缀原则。通常来说资源需求大于普通索引,但更多的资源可能带来更多的收益。
  • 前缀索引:使用字段前一部分创建,可以占用更少的资源。适用于大文本,但无法完成某些动作。
  • 唯一索引:索引列中的值必须是唯一的,但是允许为空值。不能使用change Buffer Pool优化修改。
  • 空间索引:MySQL5.7之后支持空间索引,在空间索引这方面遵循OpenGIS几何数据模型规则。

myisam不支持聚集索引