2009-01-31 26 views
79

Tengo dos tablas con date y campos. Quiero unirme en ambos campos. IntentéMySQL cómo unir tablas en dos campos

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

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

Respuesta

137
JOIN t2 ON t1.id=t2.id AND t1.date=t2.date 
28
JOIN t2 ON (t2.id = t1.id AND t2.date = t1.date) 
18
SELECT * 
FROM t1 
JOIN t2 USING (id, date) 

tal vez tendrá que usar INNEER JOIN o donde t2.id no es nulo si desea que los resultados sólo se emparejan ambas condiciones

+0

Básicamente, lentitud se debe a que calcula concretas nuevos valores que no tienen índices, por lo que las condiciones directas deberían ser más rápidas. si incluso esta consulta volvería a ser lenta, la comprobación es que existen índices, y a veces la creación de un índice para 2 campos también tiene sentido. –