一般数据库的索引可以分为三类:
- B+树索引
- hash索引
- 全文索引
B+树索引
对于B+树索引的详解介绍,推荐两个很好的blog文章:
MySQL索引-B+树(看完你就明白了)
不懂数据库索引的底层原理?那是因为你心里没点b树
hash索引
对于数据库的hash索引可以从这篇文章对其有一个大致了解:
数据库中的索引技术——哈希索引
简单来说,相对于B+树索引,hash索引虽然对于单个record的查找速度更快(一般常数级),但是它也有较多局限性:
- hash索引只支持等值索引,对于范围索引或是其它满足某些值的键值索引,无法避免表扫描的操作
- Hash 索引不能利用部分索引键查询,对于组合索引,Hash 索引在计算 Hash 值的时候是组合索引键合并后再一起计算 Hash 值,而不是单独计算 Hash 值,所以通过组合索引的前面一个或几个索引键进行查询的时候,Hash 索引也无法被利用
- hash冲突,假如遇到大量数据hash值相等,那么hash索引的效率未必就比B+树索引高
全文索引
全文索引,又称为倒排索引(inverted index). 可以把它理解为关键字索引,一般的索引可以抽象为:主键-数据的关系。而对于全文索引来说,它的索引是:关键字-主键。
以下可以作为一些参考对全文索引加深理解:
什么是全文索引,为什么使用全文索引
倒排索引为什么叫倒排索引?
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。