我需要查询两个相同的巨大表(超过百万记录)。除了其他条件之外,varchar类型的列对上的where条件也不相等。
标准的btree类型索引是合适的还是某些其他索引类型更适合不等于(<>)where condition?
答案 0 :(得分:1)
为什么不尝试使用不同的索引,让Postgres用EXPLAIN命令告诉你哪个最有效?除非您的数据包含某种破坏索引功能的罕见边缘情况,否则您可以对其进行真实测试并查看实际结果而无需猜测。
答案 1 :(得分:0)
Heroku开发人员中心指南似乎对Postgres索引有很好的解释。我个人使用B树索引,因为它们与哈希索引不同,它们是事务安全的。请看看。
“ B树是执行CREATE INDEX时获得的默认值。几乎所有数据库都有一些B树索引。B树试图保持平衡,并且树的每个分支中的数据量为大致相同。因此,为了找到行而必须遍历的级别数始终在同一范围内。”
此处有更多详细信息:Heroku Dev Center