web-dev-qa-db-fra.com

Ajouter des index (db_index = True)

Je lis un livre sur le style de codage dans Django et une chose dont ils discutent est db_index=True. Depuis que j'ai commencé à utiliser Django, je n'ai jamais utilisé cette fonction car je ne suis pas vraiment sûr de ce qu'elle fait.

Ma question est donc de savoir quand envisager d'ajouter des index?

52
catherine

Ce n'est pas vraiment Django spécifique; plus à voir avec les bases de données. Vous ajoutez des index sur les colonnes lorsque vous voulez accélérer les recherches sur cette colonne.

En règle générale, seule la clé primaire est indexée par la base de données. Cela signifie que les recherches utilisant la clé primaire sont optimisées.

Si vous effectuez de nombreuses recherches sur une colonne secondaire, pensez à ajouter un index à cette colonne pour accélérer les choses.

Gardez à l'esprit que, comme la plupart des problèmes d'échelle, ceux-ci ne s'appliquent que si vous avez un nombre statistiquement élevé de lignes (10 000 n'est pas grand).

De plus, chaque fois que vous effectuez une insertion, les index doivent être mis à jour. Faites donc attention à quelle colonne vous ajoutez des index.

Comme toujours, vous ne pouvez optimiser que ce que vous pouvez mesurer. Utilisez donc l'instruction EXPLAIN et vos journaux de base de données (en particulier les journaux de requête lents) pour savoir où les index peuvent être utiles.

111
Burhan Khalid