2012-04-11 43 views
6

Tôi có 2 bảng trong mySQL db ... họ rất lớn .. của nó khoảng 1 triệu bây giờ và ngay sau đó là 5 triệu hoặc lâu hơnlàm thế nào để tối ưu hóa truy vấn UPDATE cho hiệu suất tốt hơn MySQL

ai là người tìm việc khác là người dùng joomla bảng

tôi muốn sao chép hoặc chèn ID vào bảng tìm việc nơi cột email của cả phù hợp ..

tức là email người tìm việc = jos người dùng email.

tôi sử dụng dưới đây truy vấn nhưng phải mất quá nhiều thời gian và đặt tải nặng trên máy chủ mysql .... các truy vấn bị mắc kẹt và tôi luôn luôn kết thúc-up khởi động lại mysql ...

UPDATE `jos_jbjobs_jobseeker` 
SET user_id = (SELECT jos_users.id 
FROM jos_users 
WHERE jos_users.email = jos_jbjobs_jobseeker.email) 
WHERE EXISTS 
    (SELECT jos_users.id 
    FROM jos_users 
    WHERE jos_users.email = jos_jbjobs_jobseeker.email); 

thế nào tôi có thể tối ưu hóa truy vấn trên để đạt được hiệu suất tốt hơn. Ngoài ra, tôi sẽ quan tâm nếu nó có thể được thực thi theo lô, tức là 20000 hoặc 40000 bản ghi vào thời điểm đó.

Xin cho biết

+0

Hãy cố gắng giải thích SQL của bạn: http://dev.mysql.com/doc/refman/5.0/en/explain.html và gửi kết quả –

Trả lời

6

Hãy thử điều này:

UPDATE 
    jos_jbjobs_jobseeker a 
    INNER JOIN jos_users b ON a.email = b.email 
SET 
    a.user_id = b.id 
3

Làm thế nào về truy vấn đơn giản này?

UPDATE jos_jbjobs_jobseeker jjj 
JOIN jos_users ju 
    ON jjj.email = ju.email 
SET jjj.user_id = ju.id; 
+0

i didnot thử này, nhưng tôi sẽ cố gắng nó .. .. nhưng tôi đã làm việc trên ansewer. – ricardo

+0

Câu trả lời của tôi chính xác giống như trên. Tôi mới đăng nó một chút sau. –

+0

@sony_CO: Câu trả lời này giống nhau. Chỉ các bí danh khác nhau. – Travesty3

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