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?

Antworten:




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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.