0

所以上下文是我是一名 Rails 开发人员,我使用 PostgreSQL。

作为一般规则,我什么时候应该使用复合索引而不是使用连接表,在做出这个决定时我应该考虑什么?

现在,我倾向于只使用连接表来处理 HABTM 关系。

但想了解更多关于综合指数的信息。有性能优势吗?

如果有的话有什么好处?

编辑 1

所以我之前犯了一个错误。我说过'为 has_many 关系加入表'。我的意思是说“HABTM 关系”。我想我想弄清楚 join_tables 和复合索引是否可以互换?在我看来,如果我可以在一列中存储多个foreign_keys,为什么我需要一个连接表?

4

1 回答 1

1

在完全规范化的数据库设计中,您永远不会在单个列中存储多个值——它会破坏第一范式。

始终为多对多关系使用连接表。

我不认为您的意思是复合索引——即包含多个列的单个索引,您可以在支持多态对象的表的 *_id 和 *_type 列上使用它。

为了加入包含多个外键的列,您可能需要一个 gem 来支持它。我不相信activerecord会。

你会在什么时候使用它?恕我直言,从来没有。我想不出一个有意义的优势。

于 2013-09-08T07:44:45.977 回答