10

我必须决定是对 hstore 列使用 GIN 还是 GiST 索引。

Postgres 文档状态:

  • GIN 索引查找比 GiST 快大约三倍
  • GIN 索引的构建时间大约是 GiST 的三倍
  • GIN 索引的更新速度比 GiST 慢十倍左右
  • GIN 索引比 GiST 大两到三倍

我解释它的方式,如果您需要查询很多,请使用 GIN,如果您需要更新很多,请使用 GiST。

在本次测试中,确认了上述 GIN 优于 GiST 的所有三个缺点。然而,除了 Postgres 文档中的建议之外,GIN 相对于 GiST(查找速度更快)的优势非常小。幻灯片 53 显示,在测试中,GIN 仅快 2% 到 3%,而 Postgres 文档中建议的速度为 200% 到 300%。

哪种信息来源更可靠,为什么?

4

1 回答 1

5

文件说明了“总体上”的情况。

但是,您不是“一般”运行 PostgreSQL,而是在具有特定使用模式的特定硬件上运行它。

所以 - 如果你很在乎,那么你会想自己测试一下。GiST 索引将始终需要重新检查其状况。但是,如果您运行的查询最终还是要进行进一步检查,那么 GIN 索引可能不会在那里获胜。还有关于缓存使用等的所有常见问题。

对于我的使用,在更新率适中的小型数据库上,我对 GiST 感到非常满意。我已经看到 GIN 的速度提高了 50%(在整个查询中),但较慢的索引不值得。如果我正在构建一个巨大的存档服务器,它可能会有所不同。

于 2013-12-06T09:21:39.173 回答