Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

É mais rápido converter em varchar ou varchar em int ao comparar no MySQL?


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.