MySQL, как объединить таблицы по двум полям

102

У меня есть две таблицы с dateи idполя. Я хочу работать в обоих направлениях. Я попытался

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

это работает, но очень медленно. Есть лучший способ сделать это?

педальпет
источник

Ответы:

39
JOIN t2 ON (t2.id = t1.id AND t2.date = t1.date)
Чад Берч
источник
27
SELECT * 
FROM t1
JOIN t2 USING (id, date)

возможно, вам нужно будет использовать INNEER JOIN или где t2.id не равно null, если вы хотите, чтобы результаты соответствовали только обоим условиям

Евгений Кауров
источник
1
По сути, медлительность связана с тем, что бетон вычисляет новые значения без индексов, поэтому прямые условия должны быть быстрее. если даже этот запрос снова будет медленным, проверьте, существуют ли индексы, и иногда также имеет смысл создание одного индекса для 2 полей.
Евгений Кауров