最好的Postgresql索引类型与不等于(<>)where条件一起使用

时间:2017-09-12 06:08:49

标签: postgresql indexing where equality

我需要查询两个相同的巨大表(超过百万记录)。除了其他条件之外,varchar类型的列对上的where条件也不相等。

标准的btree类型索引是合适的还是某些其他索引类型更适合不等于(<>)where condition?

2 个答案:

答案 0 :(得分:1)

为什么不尝试使用不同的索引,让Postgres用EXPLAIN命令告诉你哪个最有效?除非您的数据包含某种破坏索引功能的罕见边缘情况,否则您可以对其进行真实测试并查看实际结果而无需猜测。

答案 1 :(得分:0)

Heroku开发人员中心指南似乎对Postgres索引有很好的解释。我个人使用B树索引,因为它们与哈希索引不同,它们是事务安全的。请看看。

“ B树是执行CREATE INDEX时获得的默认值。几乎所有数据库都有一些B树索引。B树试图保持平衡,并且树的每个分支中的数据量为大致相同。因此,为了找到行而必须遍历的级别数始终在同一范围内。”

此处有更多详细信息:Heroku Dev Center