MySQL cómo unir tablas en dos campos

102

Tengo dos tablas con campos datey id. Quiero unirme en ambos campos. Lo intenté

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

eso funciona, pero es muy lento. ¿Hay una mejor manera de hacer esto?

pedalear
fuente

Respuestas:

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

tal vez necesite usar INNEER JOIN o donde t2.id no es nulo si desea resultados que solo coincidan con ambas condiciones

Eugene Kaurov
fuente
1
Básicamente, la lentitud se debe a que el hormigón calcula nuevos valores que no tienen índices, por lo que las condiciones directas deberían ser más rápidas. si incluso esta consulta volviera a ser lenta, compruebe si existen índices y, a veces, también tiene sentido la creación de un índice para 2 campos.
Eugene Kaurov