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

Desempenho do MySQL - Cláusula IN vs. Equals (=) para um valor único


A maioria das outras respostas não fornece nada conclusivo, apenas especulação. Portanto, com base no bom conselho da resposta do @Namphibian , executei um EXPLAIN em algumas consultas semelhantes às do OP.

Os resultados estão abaixo:

EXPLAIN para uma consulta com = 1 :



EXPLAIN para uma consulta com IN(1) :



EXPLAIN para uma consulta com IN(1,2,3) :



Como você pode ver, o MySQL otimiza IN(1) para ser o mesmo que = 1 neste tipo de consulta. resposta de @mes parece indicar que isso nem sempre pode ser o caso com consultas mais complexas, no entanto.

Então, para aqueles que estavam com preguiça de executar o EXPLAIN eles mesmos, agora você sabe. E sim, você pode querer executar o EXPLAIN em sua própria consulta para ter certeza de que ela é tratada dessa maneira. :-)