所以上下文是我是一个Rails开发者,我使用PostgreSQL。
作为一般规则,我何时应该使用复合索引而不是使用连接表?在做出决定时我应该考虑哪些事项?
现在,我倾向于只使用连接表来进行HABTM关系。
但是想要了解更多有关复合指数的信息。有性能优势吗?
有什么好处?
修改1
所以我早先犯了一个错误。我曾说'加入has_many关系表'。我的意思是说'HABTM关系'。我想我想弄清楚join_tables和复合索引是否可以互换?在我看来,如果我可以在一列中存储多个foreign_keys,为什么我需要一个连接表?
答案 0 :(得分:1)
在完全规范化的数据库设计中,您永远不会在一列中存储多个值 - 它会破坏第一范式。
始终将连接表用于许多关系。
我认为你的意思不是复合索引 - 这是一个包含多个列的索引,你可以在支持多态对象的表的* _id和* _type列上使用它。
为了加入包含多个外键的列,您可能需要一个gem来支持它。我不相信activerecord会这样做。
你什么时候使用它?恕我直言我想不出一个有意义的优势。