Question

Contenu d'un site Web est stocké dans une base de données MySQL. 99% du contenu sera activé, mais certains (utilisateurs, messages, etc.) seront désactivées. La plupart des requêtes fin comme WHERE (...) AND enabled

Est-ce une bonne idée de créer un index sur le champ « activé »?

Était-ce utile?

La solution

Il ne serait pas une grande utilité de créer un index juste à enabled seul. Mais il pourrait être utile de créer un indice composé dans lequel enabled est inclus, afin d'atteindre ORDER BY d'optimisation.

Par exemple, si quelque chose comme ceci était une question commune:

SELECT * FROM things WHERE c1='foo' AND enabled=1 ORDER BY c2

Un index sur c1 permettrait aux lignes correspondantes à trouver rapidement, mais il aurait encore besoin d'être triés dans une étape séparée en utilisant c2.

Un index sur c1, c2 devrait permettre la commande à faire de l'indice, qui accélère beaucoup le tri requête, mais le manque de enabled dans l'indice déferait que, parce qu'il aurait à dresser la liste des lignes correspondantes indexées par c1, puis balayer chaque ligne pour vérifier si elle est enabled avant de trier les résultats par c2.

Si l'indice était enabled, c1, c2 ou c1, enabled, c2, toute condition WHERE et pourraient être prises de commande directement à partir de l'indice, ce qui donne des résultats plus rapidement.

Comme toujours, cela dépendra de ce que les requêtes que vous faites; vous devriez EXPLIQUER vos requêtes les plus courantes pour vérifier pour sûr de ce qu'il fait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top