代码之家  ›  专栏  ›  技术社区  ›  MiniQuark

RubyonRails中的多态关联应该添加哪些索引?

  •  4
  • MiniQuark  · 技术社区  · 17 年前

    我在RubyonRails模型中有一个多态关联。在迁移过程中,我有:

    create_table "offer_defs" do |t|
      t.integer "product_def_id"
      t.string  "product_def_type"
      ...
    end
    

    我想为这个关联添加一个索引。我在以下选项之间犹豫不决:

    add_index :offer_defs, [:product_def_id, :product_def_type]
    

    add_index :offer_defs, :product_def_id
    add_index :offer_defs, :product_def_type
    

    也许两者兼而有之?

    利弊是什么?

    1 回复  |  直到 17 年前
        1
  •  1
  •   Cameron Price    17 年前

    我会选择后者。如果您需要计算特定类型的多态附件,这将有所帮助,您可以这样做。如果需要多列索引,我至少要交换这两列的顺序(将类型放在首位),因为类型字段比ID字段更可能是这个表上的查询参数。

    注意:我假设您在这里使用的是MySQL,如果您使用的是不同的数据库,那么我的建议可能会被忽略,或者至少会被检查。