MySQL como unir tabelas em dois campos

102

Eu tenho duas tabelas com campos datee id. Eu quero entrar em ambos os campos. eu tentei

JOIN t2 ON CONCAT(t1.id, t1.date)=CONCAT(t2.id, t2.date)

funciona, mas é muito lento. Existe uma maneira melhor de fazer isso?

pedalpete
fonte

Respostas:

179
JOIN t2 ON t1.id=t2.id AND t1.date=t2.date
womble
fonte
39
JOIN t2 ON (t2.id = t1.id AND t2.date = t1.date)
Chad Birch
fonte
27
SELECT * 
FROM t1
JOIN t2 USING (id, date)

talvez você precise usar INNEER JOIN ou onde t2.id não é nulo se você quiser que os resultados correspondam apenas às duas condições

Eugene Kaurov
fonte
1
Basicamente, a lentidão ocorre porque o concreto calcula novos valores que não têm índices, portanto as condições diretas devem ser mais rápidas. se essa consulta ficar lenta novamente, verifique se os índices existem e, às vezes, a criação de um índice para 2 campos também faz sentido.
Eugene Kaurov