2009-01-31 6 views
79

Ich habe zwei Tabellen mit date und id Felder. Ich möchte mich beiden Bereichen anschließen. Ich versuchteMySQL, wie man Tabellen auf zwei Feldern verbindet

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

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

Antwort

137
JOIN t2 ON t1.id=t2.id AND t1.date=t2.date 
28
JOIN t2 ON (t2.id = t1.id AND t2.date = t1.date) 
18
SELECT * 
FROM t1 
JOIN t2 USING (id, date) 

vielleicht werden Sie verwenden müssen INNEER JOIN oder wo t2.id nicht null ist wenn Sie Ergebnisse wollen nur beide Bedingungen passende

+0

Grundsätzlich ist die Langsamkeit, weil Beton berechnet neue Werte, die keine Indizes haben, also direkte Bedingungen sollten schneller sein. Wenn auch diese Abfrage wieder langsam ist, überprüfen Sie, ob Indizes vorhanden sind, und manchmal ist es auch sinnvoll, einen Index für 2 Felder zu erstellen. –