En règle générale, les indices devraient être sur tous les champs que vous utilisez dans les jointures ou les clauses where (si ils ont assez de valeurs différentes pour le faire à l'aide d'un indice de la peine de terrain, avec seulement un peu de valeurs possibles, ne bénéficient pas d'un index, qui est pourquoi il est inutile d'essayer de l'indice d'un champ de bits).
Si votre structure a été crée officiellement les clés primaires (ce qui est normal, je n'ai jamais créer une table sans clé primaire), ceux-ci sont, par définition, indexé comme une clé primaire est obligatoire d'avoir un index unique sur elle. Souvent, les gens oublient qu'ils ont à l'index les clés étrangères en raison d'un index n'est pas automatiquement créé lorsque vous configurez la clé étrangère relationsship. Étant donné que le but d'une clé étrangère est de vous donner un champ d'adhérer, la plupart des clés étrangères devrait probablement être indexés.
Index une fois créés, ils doivent être maintenus. Si vous avez beaucoup de données changer d'activité, ils peuvent être fragmenté et ralentir les performances et ont besoin d'être rafraîchi. Lire dans la documentation en ligne sur les index. Vous pouvez également trouver la syntaxe de l'instruction create index là.
Les index sont une question d'équilibre, chaque indice vous ajoutez, généralement, ajouter de temps pour insérer des données, des mises à jour et des suppressions, mais peut potentiellement accélérer sélectionne et des jointures complexes, des insertions, des mises à jour et suppressions. Il n'y a pas de formule pour quels sont les meilleurs indices bien que la règle générale ci-dessus est un bon endroit pour commencer.