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?
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?
JOIN t2 ON t1.id=t2.id AND t1.date=t2.date
JOIN t2 ON (t2.id = t1.id AND t2.date = t1.date)
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
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. –