2009-01-31 11 views
79

Ho due tabelle con campi date e id. Voglio unirmi a entrambi i campi. Ho provatoMySQL come unire tabelle su due campi

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

che funziona, ma è molto lento. c'è un modo migliore per farlo?

risposta

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) 

forse avrete bisogno di utilizzare INNEER JOIN o dove t2.id non è nullo se si desidera che i risultati solo corrispondenza entrambe le condizioni

+0

In sostanza, la lentezza è perché calcola concreti nuovi valori che non hanno indici, quindi le condizioni dirette dovrebbero essere più veloci. se anche questa query fosse di nuovo lenta, verifica che esistano gli indici, e talvolta anche la creazione di un indice per 2 campi ha senso. –