2008-11-20 2 views
4

J'ai une association polymorphe dans un modèle Ruby on Rails. Dans la migration, j'ai:Quels index devraient être ajoutés pour une association polymorphe dans Ruby on Rails?

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

Je voudrais ajouter un index pour cette association. Je hésite entre les options suivantes:

add_index :offer_defs, [:product_def_id, :product_def_type] 

ou

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

ou peut-être les deux?

Quels sont les avantages et les inconvénients?

Répondre

1

Je voudrais aller avec la dernière option. Cela vous aidera si vous avez besoin de compter les pièces jointes polymorphes d'un type spécifique, ce que vous pourriez faire. Si vous vouliez l'index de plusieurs colonnes, j'échangerais au moins l'ordre des deux colonnes (en mettant le type en premier), puisque ce champ de type est beaucoup plus susceptible d'être un paramètre de requête sur cette table que le champ d'identification.

note: Je suppose que vous utilisez mysql ici, et mon conseil devrait probablement être ignoré, ou au moins vérifié, si vous utilisez un autre DB.