一般数据库的索引可以分为三类:

  • B+树索引
  • hash索引
  • 全文索引

B+树索引

对于B+树索引的详解介绍,推荐两个很好的blog文章:
MySQL索引-B+树(看完你就明白了)
不懂数据库索引的底层原理?那是因为你心里没点b树

hash索引

对于数据库的hash索引可以从这篇文章对其有一个大致了解:
数据库中的索引技术——哈希索引

简单来说,相对于B+树索引,hash索引虽然对于单个record的查找速度更快(一般常数级),但是它也有较多局限性:

  1. hash索引只支持等值索引,对于范围索引或是其它满足某些值的键值索引,无法避免表扫描的操作
  2. Hash 索引不能利用部分索引键查询,对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用
  3. hash冲突,假如遇到大量数据hash值相等,那么hash索引的效率未必就比B+树索引高

全文索引

全文索引,又称为倒排索引(inverted index). 可以把它理解为关键字索引,一般的索引可以抽象为:主键-数据的关系。而对于全文索引来说,它的索引是:关键字-主键。

以下可以作为一些参考对全文索引加深理解:
什么是全文索引,为什么使用全文索引
倒排索引为什么叫倒排索引?


鼠与我
7 声望1 粉丝

Sad