Ce n'est pas vraiment spécifique à Django; cela concerne davantage les bases de données. Vous ajoutez des index sur des colonnes lorsque vous souhaitez accélérer les recherches sur cette colonne.
En général, 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, envisagez d'ajouter un index à cette colonne pour accélérer les choses.
Gardez à l'esprit que, comme la plupart des problèmes d'échelle, cela s'applique uniquement si vous avez un nombre important de lignes d'un point de vue statistique (10 000 n'est pas considéré comme important).
De plus, à chaque fois que vous faites une insertion, les index doivent être mis à jour. Faites donc attention à la colonne sur laquelle vous ajoutez des index.
Comme toujours, vous ne pouvez optimiser que ce que vous pouvez mesurer - utilisez donc l'opérateur EXPLAIN
et vos journaux de base de données (en particulier tout journal de requêtes lentes) pour découvrir où les index peuvent être utiles.