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索引执行相同操作。比较的值,你会有你需要的答案,根据你的数据。

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...