Ce qui suit est basé sur mon expérience de PostgreSQL, mais probablement aussi pour appliquer MySQL et d'autres.
Si vous prévoyez de récupérer un grand nombre d'enregistrements à partir de cette table ou d'utiliser la pagination, un index sur les champs utilisés dans ORDER BY
serait utile.
Vous devez créer un index sur tous les champs de commande dans le même ordre. Si vous mélangez ASC
et DESC
dans votre ORDER BY
, vous devrez créer un index avec ces commandes spécifiques pour tirer pleinement parti de l'index.
Une migration ActiveRecord adaptée à votre table des photos serait:
add_index :photos, [:created_at, :version]
Je vous conseille de regarder à la sortie EXPLAIN ANALYZE
avec des données comme la production avant et après l'ajout de l'indice pour confirmer qu'il est d'avoir l'effet que vous êtes après.
Cela semble être une bonne pratique à faire. Mais peut-être que cela ne fera pas de différence en termes de vitesse car, lorsqu'ils sont triés par identifiant, ils sont (généralement) déjà triés et Rails génère automatiquement un index pour l'identifiant. –