应该为Ruby on Rails中的多态关联添加哪些索引?

时间:2008-11-20 19:17:06

标签: ruby-on-rails database-design

我在Ruby on Rails模型中有一个多态关联。在迁移中,我有:

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 个答案:

答案 0 :(得分:1)

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

注意:我假设你在这里使用mysql,如果你使用不同的数据库,我的建议应该被忽略,或至少检查一下。