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?

Respostas:


179
JOIN t2 ON t1.id=t2.id AND t1.date=t2.date


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.