微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL:GIN还是GiST索引?

从我可以找到什么信息,他们都解决了相同的问题 – 更深奥的操作,如数组包含和交集(&&& @,< @等)。然而,我会感兴趣的建议,什么时候使用一个或另一个(或不可能)。
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索引执行相同操作。比较的值,你会有你需要的答案,根据你的数据。

原文地址:https://www.jb51.cc/postgresql/193499.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐