2009-01-31 54 views
79

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

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

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

Trả lời

137
JOIN t2 ON t1.id=t2.id AND t1.date=t2.date 
28
JOIN t2 ON (t2.id = t1.id AND t2.date = t1.date) 
18
SELECT * 
FROM t1 
JOIN t2 USING (id, date) 

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

+0

Về cơ bản, chậm là vì tính toán của bê tông các giá trị mới không có chỉ mục để các điều kiện trực tiếp phải nhanh hơn. nếu ngay cả truy vấn này sẽ chậm lại, kiểm tra là chỉ mục tồn tại và đôi khi tạo một chỉ mục cho 2 trường cũng có ý nghĩa. –

Các vấn đề liên quan