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_type
和posting_detail_id
的组合将是唯一的,因为每个组合中只有一个会发生。所以在我看来,索引不会那么有用。
在这种情况下应该使用什么索引?只有posting_detail_type
列上的一个?
答案 0 :(得分:1)
是的,这个索引仍然有用。
一个基本的经验法则是,您定期查询的任何列都应编入索引,因为它会加快搜索时间。
所以在你的多态关联的情况下,id和type列都应该是索引,因为虽然你将有一个唯一的id / type配对,你仍然会有多个相同类型的不同id,反之亦然将不得不进行搜索,以便在两个列上加速搜索是值得的。
希望能回答你的问题。