type - reconstruire index mysql




MySQL-pourquoi ne pas indexer tous les champs? (4)

Récemment, j'ai appris la merveille des index, et la performance s'est considérablement améliorée. Cependant, avec tout ce que j'ai appris, je n'arrive pas à trouver la réponse à cette question.

Les index sont excellents, mais pourquoi quelqu'un n'a-t-il pas indexé tous les champs pour rendre la table incroyablement rapide? Je suis sûr qu'il y a une bonne raison de ne pas le faire, mais qu'en est-il de trois champs dans une table de trente champs? 10 dans un champ de 30? Où devrait-on tracer la ligne, et pourquoi?


Ce n'est pas une bonne idée d'indexer toutes les colonnes d'une table. Bien que cela rende la lecture de la table très rapide, elle devient également beaucoup plus lente à écrire. Ecrire dans une table dont chaque colonne est indexée impliquerait de mettre le nouvel enregistrement dans cette table et de placer ensuite les informations de chaque colonne dans sa propre table d'index.


Gardez à l'esprit que chaque index doit être mis à jour chaque fois qu'une ligne est mise à jour, insérée ou supprimée. Ainsi, plus vous avez d'index, plus vous aurez de performances plus lentes pour les opérations d'écriture.

En outre, chaque index prend de l'espace disque et de l'espace mémoire supplémentaires (lorsqu'il est appelé), ce qui peut potentiellement ralentir les opérations de lecture (pour les tables volumineuses). Regarde ça


Les index prennent de la place en mémoire (RAM); Trop ou trop grand d'index et la DB va devoir les échanger vers et depuis le disque. Ils augmentent également le temps d'insertion et de suppression (chaque index doit être mis à jour pour chaque donnée insérée / supprimée / mise à jour).

Vous n'avez pas de mémoire infinie. Faire en sorte que tous les index tiennent dans la RAM = bien.

Vous n'avez pas le temps infini. L'indexation uniquement des colonnes dont vous avez besoin indexé minimise l'insertion des performances d'insertion / suppression / mise à jour.


Vous devez équilibrer les besoins de CRUD. L'écriture sur les tables devient lente. En ce qui concerne l'emplacement de la ligne, cela dépend de la façon dont les données sont traitées (filtrage de tri, etc.).





indexing