在Rails应用程序中,什么数据库索引应该用于has_one多态关联?

时间:2014-03-05 02:01:23

标签: ruby-on-rails indexing polymorphic-associations has-one

has_many多态关联通常会被索引,如下所示:

# The migration:
t.references :commentable, polymorphic: true, index: true

# Produces this in the schema:
add_index "comments", ["commentable_id", "commentable_type"], name: "index_comments_on_commentable_id_and_commentable_type"

但是,我有一个has_one多态关联(有关详细信息,请参阅this question)。这个指数还有用吗? posting_detail_typeposting_detail_id的组合将是唯一的,因为每个组合中只有一个会发生。所以在我看来,索引不会那么有用。

在这种情况下应该使用什么索引?只有posting_detail_type列上的一个?

1 个答案:

答案 0 :(得分:1)

是的,这个索引仍然有用。

一个基本的经验法则是,您定期查询的任何列都应编入索引,因为它会加快搜索时间。

所以在你的多态关联的情况下,id和type列都应该是索引,因为虽然你将有一个唯一的id / type配对,你仍然会有多个相同类型的不同id,反之亦然将不得不进行搜索,以便在两个列上加速搜索是值得的。

希望能回答你的问题。