# 如何创建一个高性能的索引
索引,将书刊中的内容或项目分类摘录,标明页数,按一定次序排列,附在一书之后,或单独编印成册,以便读者查阅,旧称通检或备检。
索引最初指一本书的目录,你可以快速定位到你要检索的内容,而不必逐页翻找。
而在数据库中,索引的关键字是 index
或者 key
。创建一个合理的索引能够大幅提升检索效率,对查询性能的影响至关重要。如果你没有感觉到它对查询性能的重大影响,有可能是因为你们的数据亮太小了,如同一本十页的书,不需要使用目录也可以快速定位到你要检索的内容。
之所以索引能够给数据库查询性能带来重大影响,源自于索引的数据结构: B+ Tree
以及 Hash
。从这里,我们可以看出来你所学到的数据结构也是有用武之地,而非屠龙之术。根据这两种数据结构,索引分为两大类,它们分别适用于不同的业务场景。
- B+ tree
- Hash
- GiST: 空间向量
- SP-GiST
- GIN: 文档索引,倒排
- BRIN
# B+ Tree 与 B Tree 索引
B Tree
索引实际上采用的数据结构是 B+ Tree
,以下是关于 B+ Tree
的数据结构。
那它为什么不采用查询性能更高的二叉树,而偏偏选择多叉树的
B+ Tree
呢?
# 索引过程
# B Tree 索引及其限制
有时,你对表添加索引后,但对查询性能的影响微乎其微。这很可能源于你对 B+ Tree
的了解不够充分。