加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL:GIN还是GiST索引?

发布时间:2020-12-13 16:46:59 所属栏目:百科 来源:网络整理
导读:从我可以找到什么信息,他们都解决了相同的问题 – 更深奥的操作,如数组包含和交集( @, @等)。然而,我会感兴趣的建议,什么时候使用一个或另一个(或不可能)。 PostgreSQL documentation有一些关于这方面的信息: GIN索引查找比GiST快三倍 GIN索引的建立时
从我可以找到什么信息,他们都解决了相同的问题 – 更深奥的操作,如数组包含和交集(&&& @,< @等)。然而,我会感兴趣的建议,什么时候使用一个或另一个(或不可能)。
PostgreSQL documentation有一些关于这方面的信息:

> GIN索引查找比GiST快三倍
> GIN索引的建立时间比GiST要长三倍
> GIN索引的更新速度比GiST要快十倍
> GIN索引比GiST大两到三倍

然而,我会特别感兴趣的是,当内存到索引大小开始变小(即索引大小变得比可用内存大得多)时是否有性能影响?我被告知在#postgresql IRC通道,GIN需要保持所有的索引在内存中,否则它将不会有效,因为不同于B-Tree,它不知道从磁盘读入哪个部分一个特定的查询?问题是:这是真的(因为我也被告知与此相反)? GiST有同样的限制吗?使用这些索引算法时,我应该注意的其他限制吗?

首先,你需要使用它们进行文本搜索索引吗? GIN和GiST是某些数据类型的专用索引。如果你需要索引简单的char或整数值,那么正常的B-Tree索引是最好的。
无论如何,PostgreSQL文档有一个章节 GIST和一个在 GIN,在那里你可以找到更多的信息。 而且,最后但并非最不重要的是,找到最好的方法是生成样本数据(尽可能多地是一个真实的场景),然后创建一个GIST索引,测量创建索引所需的时间,插入一个新值,执行一个示例查询。然后删除索引并对GIN索引执行相同操作。比较的值,你会有你需要的答案,根据你的数据。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读