当前位置:   article > 正文

postgreSQL源码分析——索引的建立与使用——GIN索引(1)_postgresql 创建 gin

postgresql 创建 gin

2021SC@SDUSC
本篇博客主要讲解Gin索引的介绍和相关的组织结构

GIN索引介绍

GIN(Generalized Inverted Index, 通用倒排索引) 是一个存储对(key, posting list)集合的索引结构,其中key是一个键值,而posting list 是一组出现过key的位置。如(‘hello’, ‘14:2 23:4’)中,表示hello在14:2和23:4这两个位置出现过,在PG中这些位置实际上就是元组的tid(行号,包括数据块ID(32bit),以及item point(16 bit) )。
在表中的每一个属性,在建立索引时,都可能会被解析为多个键值,所以同一个元组的tid可能会出现在多个key的posting list中。
通过这种索引结构可以快速的查找到包含指定关键字的元组,因此GIN索引特别适用于多值类型的元素搜索,比如支持全文搜索,数组中元素的搜索,而PG的GIN索引模块最初也是为了支持全文搜索而开发的。

GIN扩展

GIN是一个开放的索引接口,所以它不仅适用于已经存在的如数组、全文检索等数据类型,同样也可以扩展支持更多的数据类型。

在PG9.0版本中,定义一个GIN访问方法所要做的就是实现5个用户定义的方法,这些方法定义了键值、键值与键值之间的关系、被索引值、能够使用索引的查询以及部分匹配。

这些方法是:
1.compare方法:比较两个键值a和b,然后返回一个整数值,返回负值表示a < b,返回0表示a = b,返回正值表示a > b。

其函数原型如下:

int compare(Datum a, Datum b)
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/658557
    推荐阅读
    相关标签
      

    闽ICP备14008679号