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.