2012-04-11 4 views
6

У меня есть 2 таблицы в БД MySQL ... они очень большие .. его около 1 млн сейчас и скоро будет 5 миллионов или около тогокак оптимизировать UPDATE запроса для лучшей производительности MySQL

один ищущей работа другой Вебсайтов пользователи таблица

Я хочу, чтобы скопировать или вставить идентификаторы в таблицу, где соискателей Швеции столбец электронной почты обоих матчей ..

т.е. Соискатель Email = Jos пользователей электронной почты.

Я использовал ниже запрос, но это занимает слишком много времени, и помещает большую нагрузку на сервере MySQL .... запросы застревают и я всегда заканчиваю вверх перезагрузки 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); 

как я могу оптимизируйте выше запрос для достижения более высокой производительности. Кроме того, мне было бы интересно, если он может быть выполнен партиями, то есть 20000 или 40000 записей в момент времени.

Пожалуйста посоветуйте

+0

Пожалуйста, попробуйте EXPLAIN ваш SQL: http://dev.mysql.com/doc/refman/5.0/en/explain.html и отправить результат –

ответ

6

Попробуйте это:

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

Как насчет этого простого запроса?

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

я didnot попробовать это, но я постараюсь это .. .. но я получил вышеупомянутый помощник. – ricardo

+0

Мой ответ точно такой же, как и выше. Я только что опубликовал его чуть позже. –

+0

@sony_CO: Этот ответ тот же. Просто разные псевдонимы. – Travesty3

Смежные вопросы