MySQL comment joindre des tables sur deux champs


102

J'ai deux tables avec dateetid champs. Je veux rejoindre les deux domaines. j'ai essayé

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

cela fonctionne, mais c'est très lent. Y a-t-il une meilleure manière de faire cela?

Réponses:




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

vous devrez peut-être utiliser INNEER JOIN ou où t2.id n'est pas nul si vous voulez que les résultats ne correspondent qu'aux deux conditions


1
Fondamentalement, la lenteur est due au fait que Concrete calcule de nouvelles valeurs sans index, les conditions directes devraient donc être plus rapides. si même cette requête serait à nouveau lente, vérifiez si les index existent, et parfois la création d'un index pour 2 champs a également du sens.
Eugene Kaurov
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.