历史版本。 PostgreSQL 8.2 已结束支持。 请参阅 当前版本手册.
51.4. GIN 使用提示和技巧 #
- 创建还是插入
向 GIN 索引插入数据可能较慢,因为每个值很可能需要插入许多键。因此,对于向表中执行的批量插入,建议先删除 GIN 索引,待批量插入完成后再重建它。
- gin_fuzzy_search_limit
开发 GIN 索引的首要目标,是为 PostgreSQL 中高度可扩展的全文搜索提供支持,而全文搜索经常会返回非常大的结果集。此外,这种情况常发生在查询包含非常高频的词时,因此庞大的结果集甚至没有用处。由于从索引中读取许多元组并对其排序可能需要很长时间,这在生产环境中是不可接受的。(注意,索引搜索本身是非常快的。)
为了便于受控地执行这类查询,GIN 对返回行数设置了一个可配置的软上限,即配置参数
gin_fuzzy_search_limit。默认值为 0(表示无限制)。如果设置了非零限制,那么返回集合将是整个结果集的一个随机子集。“软”的意思是,实际返回结果的数量可能会与指定的限制略有不同,这取决于查询以及系统随机数生成器的质量。