MySQL วิธีเข้าร่วมตารางในสองฟิลด์


102

ฉันมีสองตารางที่มีdateและidฟิลด์ ฉันต้องการเข้าร่วมทั้งสองสาขา ฉันเหนื่อย

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

ใช้งานได้ แต่ช้ามาก มีวิธีที่ดีกว่านี้ไหม

คำตอบ:




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

บางทีคุณอาจต้องใช้ INNEER JOIN หรือโดยที่ t2.id ไม่ใช่ null หากคุณต้องการผลลัพธ์ที่ตรงกับเงื่อนไขทั้งสองเท่านั้น


1
โดยทั่วไปความช้าเป็นเพราะคอนกรีตคำนวณค่าใหม่ที่ไม่มีดัชนีดังนั้นเงื่อนไขโดยตรงควรเร็วกว่า แม้ว่าแบบสอบถามนี้จะช้าอีกครั้งการตรวจสอบก็มีดัชนีอยู่และบางครั้งการสร้างดัชนีหนึ่งสำหรับ 2 ช่องก็สมเหตุสมผลเช่นกัน
Eugene Kaurov
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.