MySQL, jak łączyć tabele na dwóch polach


102

Mam dwie tabele z polami datei id. Chcę dołączyć na obu polach. próbowałem

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

to działa, ale jest bardzo powolne. czy jest lepszy sposób na zrobienie tego?

Odpowiedzi:




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

być może będziesz musiał użyć INNEER JOIN lub gdzie t2.id nie jest zerowe, jeśli chcesz, aby wyniki pasowały tylko do obu warunków


1
Zasadniczo powolność wynika z tego, że beton oblicza nowe wartości, które nie mają indeksów, więc bezpośrednie warunki powinny być szybsze. jeśli nawet to zapytanie byłoby znowu wolne, sprawdź, czy istnieją indeksy, a czasami ma sens utworzenie jednego indeksu dla 2 pól.
Eugene Kaurov
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.