MySQL cara menggabungkan tabel di dua bidang

102

Saya memiliki dua tabel dengan bidang datedan id. Saya ingin bergabung di kedua bidang. Saya mencoba

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

yang berhasil, tetapi sangat lambat. apakah ada cara yang lebih baik untuk melakukan ini?

pedalpete
sumber

Jawaban:

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

mungkin Anda perlu menggunakan INNEER JOIN atau di mana t2.id bukan null jika Anda ingin hasil hanya cocok dengan kedua kondisi tersebut

Eugene Kaurov
sumber
1
Pada dasarnya, kelambatan adalah karena beton menghitung nilai baru yang tidak memiliki indeks sehingga kondisi langsung harus lebih cepat. bahkan jika kueri ini akan menjadi lambat lagi, periksa apakah indeks ada, dan terkadang pembuatan satu indeks untuk 2 bidang juga masuk akal.
Eugene Kaurov