如何优化UPDATE查询以获得更好的MySQL性能

时间:2012-04-11 14:07:36

标签: php mysql sql mysql-error-1064

我在mySQL db中有2个表... 它们非常大......现在大约有100万,很快就会有500万左右。

一个是求职者 另一个是joomla用户表

我想将ID复制或插入到jobseeker表中,其中两者的电子邮件列匹配..

即。 jobseeker 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条记录。

请告知

2 个答案:

答案 0 :(得分:6)

试试这个:

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

答案 1 :(得分:3)

这个简单的查询怎么样?

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