我在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
或可能两者兼而有之?
有什么优点和缺点?
答案 0 :(得分:1)
我会选择后者。如果您需要计算特定类型的多态附件,这将有所帮助。如果你想要多列索引,我至少交换两列的顺序(把类型放在第一位),因为这个类型字段更有可能是这个表上的查询参数而不是id字段。
注意:我假设你在这里使用mysql,如果你使用不同的数据库,我的建议应该被忽略,或至少检查一下。