MySQL cách nối các bảng trên hai trường


102

Tôi có hai bảng với dateidcác trường. Tôi muốn tham gia trên cả hai lĩnh vực. Tôi đã thử

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

hoạt động, nhưng nó rất chậm. Có cách nào tốt hơn để làm điều này?

Câu trả lời:




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

có lẽ bạn sẽ cần sử dụng INNEER JOIN hoặc trong đó t2.id không phải là null nếu bạn muốn kết quả chỉ khớp với cả hai điều kiện


1
Về cơ bản, chậm là do bê tông tính toán các giá trị mới không có chỉ số nên các điều kiện trực tiếp nên nhanh hơn. nếu ngay cả truy vấn này sẽ chậm lại, hãy kiểm tra xem các chỉ mục có tồn tại hay không và đôi khi việc tạo một chỉ mục cho 2 trường cũng có ý nghĩa.
Eugene Kaurov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.