PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 58. GIN索引 | 下一页

# 58.1. 介绍

GIN的意思是通用倒排索引(Generalized Inverted Index)。 GIN被设计用于这样一种情况：被索引项是组合值， 而被索引处理的查询需要搜索出现在这些组合值中的元素值。 比如，项目可能是文档，查询可以是搜索包含多个特定单词的文档。

我们使用项目这个词指代被索引的组合值，键指代一个元素值。 GIN本身总是存储和搜索键，而不是项目值。

GIN索引存储一系列(key, posting list)对， 这里的posting list是一组出现键的行ID。 每一个被索引的项目都可能包含多个键，因此同一个行ID可能会出现在多个posting list中。 每个键值只被存储一次，因此在相同的键出现在很多项目的情况下，GIN索引是非常紧凑的。

GIN索引之所以是通用的，是因为GIN 访问方法不需要了解它所加速的操作。 取而代之的是，它使用为特殊数据类型定义的定制策略。 策略定义了如何从被索引项目和查询条件中抽出键，以及如何决定包含了查询中一些键的一行是否确实满足查询条件。

GIN的一个优点是它允许由领域专家而不是由数据库专家来 开发附带适当的访问方法的自定义数据类型。 这一点与使用GiST很相似。

PostgreSQL中的GIN 实现主要由 Teodor Sigaev 和 Oleg Bartunov 维护。 关于GIN的更多信息可以访问他们的 网站。

上一页 | 起始页 | 下一页
GIN索引 | 上一级 | 内建操作符类