web-dev-qa-db-fra.com

Est-ce que l'index sur Varchar fait la différence?

Est-ce que l'index sur une colonne varchar ralentit l'exécution de la requête? Je peux faire en sorte que ce soit int. et je n'ai pas besoin de faire la comparaison LIKE%. 

36
Murvinlai

L'index sur une colonne varchar ralentit-il l'exécution de la requête?

Non.
Si l'optimiseur décide d'utiliser l'index, la requête s'exécutera plus rapidement. INSERTs/UPDATEs/DELETEs sur cette table sera plus lent, mais pas assez probable pour le remarquer.

Je n'ai pas besoin de faire la comparaison LIKE%

Sachez que vous utilisez:

LIKE '%whatever%'

... va pas utiliser un index, mais le suivant:

LIKE 'whatever%'

La clé est un caractère générique sur le côté gauche de la chaîne signifie qu'un index sur la colonne ne peut pas être utilisé.

Sachez également que MySQL limite la quantité d’espace réservé pour les index - leur longueur peut atteindre 1000 octets pour les tables MyISAM (767 octets pour InnoDB). 

80
OMG Ponies

Si vous pouvez remplacer votre colonne varchar par un entier (ce qui, je pense, correspond à votre suggestion), un index incluant la colonne entière donnera de meilleurs résultats que la colonne varchar pour plusieurs raisons. 

  1. La taille de l'index sera plus petite et impliquera moins de pagination.
  2. La comparaison des nombres entiers est bien meilleure que varchar.
10
Leigh S

L'indexation ne ralentit pas la requête, la taille de la base de données ne fait que grossir, alors n'hésitez plus et essayez-le.

Vous devriez pouvoir obtenir de meilleures performances lors de l'extraction de lignes, mais cela dépend de vos données, de vos requêtes.

6
YOU

Vous n'allez pas ralentir vos requêtes en indexant. Si vous parvenez à ce que la colonne soit un type int, je vous le recommande, car la plupart des SGBDR peuvent rechercher des entiers plus rapidement que varchar

2
Brad

Il y a des problèmes de performance en ce qui concerne les insertions. Je peux certainement vous dire que l'insertion dans une grande table qui a un index sur une colonne varchar peut être très lente. (jusqu'à 50x)

0
Erhard Dinhobl