Isso depende dos índices. Se ambas as colunas tiverem índices definidos, você deve converter para
int
, porque ele só precisa comparar 4 bytes. Se, no entanto, apenas o varchar
coluna é indexada, convertida para varchar
. No final, você deve ter sua consulta
explain
ed, para ver qual índice é usado e converta de acordo. Se nenhum índice for definido, transmitindo para
int
é a melhor abordagem em geral. No entanto, se não houver um conjunto de índices, isso realmente não importa, você economizaria muito mais tempo indexando do que escolhendo a maneira correta de converter. Exceto, novamente, as mesas são pequenas. Então, também não importa muito. Na verdade, devemos levar em conta não apenas os custos de comparação, mas também de conversão:Conjurando um
int
para um varchar
é um pouco mais rápido do que analisar um varchar
para um int
. No entanto, comparar um varchar com pelo menos 4 caracteres tornará essa vantagem inútil. Se seus valores tendem a ser maiores que 999, transmitindo para int
será mais rápido. Mas isso agora depende do seu sistema operacional, da arquitetura, do conjunto de instruções usado pelo seu binário mysql e assim por diante. A única maneira de obter uma resposta realmente confiável é:Faça um benchmark dessa situação na máquina de destino.