2008-11-20 49 views
4

我在Ruby on Rails模型中有一個多態關聯。在遷移中,我有:應該爲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

我會選擇後者。如果您需要對特定類型的多態附件進行計數,這可能會有所幫助,您可能會這樣做。如果你想要多列索引,至少要交換兩列的順序(首先放置類型),因爲該類型字段比id字段更可能是該表上的查詢參數。

注意:我假設你在這裏使用mysql,如果你使用不同的數據庫,我的建議可能會被忽略,或至少檢查。