MySQL, wie Tabellen in zwei Feldern verknüpft werden

102

Ich habe zwei Tabellen mit dateund idFelder. Ich möchte an beiden Feldern teilnehmen. Ich habe es versucht

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

das funktioniert, ist aber sehr langsam. Gibt es einen besseren Weg, dies zu tun?

Pedalpete
quelle

Antworten:

178
JOIN t2 ON t1.id=t2.id AND t1.date=t2.date
womble
quelle
39
JOIN t2 ON (t2.id = t1.id AND t2.date = t1.date)
Chad Birch
quelle
27
SELECT * 
FROM t1
JOIN t2 USING (id, date)

Möglicherweise müssen Sie INNEER JOIN verwenden oder t2.id ist nicht null, wenn Sie Ergebnisse wünschen, die nur beiden Bedingungen entsprechen

Eugene Kaurov
quelle
1
Langsamkeit liegt im Grunde darin, dass Beton neue Werte berechnet, die keine Indizes haben, sodass direkte Bedingungen schneller sein sollten. Wenn auch diese Abfrage wieder langsam wäre, prüfen Sie, ob Indizes vorhanden sind, und manchmal ist es auch sinnvoll, einen Index für zwei Felder zu erstellen.
Eugene Kaurov