2009-10-08 12 views
3

J'ai entendu à maintes reprises que vous devriez ajouter des index à toute clé étrangère que vous allez faire des jointures. J'ai également entendu que vous devriez avoir des index pour les champs que vous allez faire des requêtes. Quelqu'un a-t-il une liste ou un ensemble de lignes directrices assez exhaustif sur le moment de ne pas ajouter d'index?Rails ActiveRecord Table Indexes - Quand devraient-ils être utilisés?

Il doit y avoir une taille de table où il est inefficace d'avoir des index. Il doit y avoir une limite au nombre d'index par table, ou pourquoi ne pas ajouter un index à chaque colonne?

Toutes les ressources que vous pouvez suggérer seraient très utiles.

Merci d'avance!

Répondre

2

pourquoi ne pas ajouter un index à chaque colonne

index accélèrent les requêtes mais peuvent ralentir insertions et mises à jour. La recherche du point d'intérêt dépendra en partie du fait que votre application est susceptible de faire plus de requêtes (par exemple un catalogue de bibliothèque) ou de plus de mises à jour (par exemple une application ou un journal d'audit).

+0

Cela a du sens. Qu'en est-il des colonnes datetime où chaque valeur est potentiellement différente? – chrishomer

+1

Encore une fois, cela dépend si vous êtes susceptible de faire des recherches basées sur cette colonne, et si vous en demanderez plus ou en insérerez plus. Il y a des systèmes qui ajoutent des lignes toutes les millisecondes mais qui ne sont interrogés que quelques fois par semaine. Ils ne devraient pas être fortement indexés. –

1

Placez un index sur tout ce à quoi vous êtes susceptible de participer ou de trier. Dans la plupart des cas, il vaut mieux pécher par excès d'index, simplement parce que la plupart des bases de données impliquent plus de lectures que d'écritures, en particulier les applications web. Si vous faisiez des transactions financières, ce serait différent, mais il s'agit d'une application Rails.

Questions connexes