在 Rails 应用程序中,应该使用哪个数据库索引进行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多态关联(有关详细信息,请参阅此问题)。这个索引还有用吗?posting_detail_typeposting_detail_id的组合将是独一无二的,因为每个组合中只有一个会发生。所以在我看来,索引不会那么有用。

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

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

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

因此,在多态关联的情况下,id 和类型列都应该是索引,因为虽然您将拥有唯一的 id/type 配对,但您仍然会有多个具有不同 id 的相同类型,反之亦然,您必须搜索,因此加快对两列的搜索速度是值得的。

希望能回答你的问题。

最新更新