MySQL come unire tabelle su due campi


102

Ho due tabelle con datee idcampi. Voglio partecipare a entrambi i campi. Provai

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

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

Risposte:


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


27
SELECT * 
FROM t1
JOIN t2 USING (id, date)

forse dovrai usare INNEER JOIN o dove t2.id non è nullo se vuoi che i risultati soddisfino solo entrambe le condizioni


1
Fondamentalmente, la lentezza è perché il calcestruzzo calcola nuovi valori che non hanno indici, quindi le condizioni dirette dovrebbero essere più veloci. se anche questa query sarebbe di nuovo lenta, controllare che gli indici esistano e talvolta ha senso anche creare un indice per 2 campi.
Eugene Kaurov
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.