Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-il plus rapide de convertir en varchar ou varchar en int lors de la comparaison dans MySQL?

Cela dépend des index. Si les deux colonnes ont des index définis, vous devez convertir en int , car il n'a besoin que de comparer 4 octets. Si, toutefois, seul le varchar la colonne est indexée, convertie en varchar .

A la fin, vous devriez avoir votre requête explain ed, pour voir quel index est utilisé, et caster en conséquence.

Si aucun index n'est défini, conversion en int est la meilleure approche en général. Cependant, s'il n'y a pas d'ensemble d'index, cela n'a pas vraiment d'importance, vous gagnerez beaucoup plus de temps en indexant qu'en choisissant la bonne méthode de diffusion. Sauf que, encore une fois, les tables sont petites. Ensuite, cela n'a pas vraiment d'importance non plus.

En fait, nous devrions prendre en compte non seulement les coûts de comparaison, mais aussi de casting :Casting d'un int à un varchar est légèrement plus rapide que l'analyse d'un varchar à un int . Cependant, comparer un varchar qui a au moins 4 caractères rendra cet avantage inutile. Si vos valeurs ont tendance à être supérieures à 999, conversion en int sera plus rapide. Mais cela dépend maintenant de votre système d'exploitation, de l'architecture, du jeu d'instructions utilisé par votre binaire mysql, etc. La seule façon d'obtenir une réponse vraiment fiable est de :comparer cette situation sur la machine cible.