更新Mysql查询优化

时间:2012-09-27 14:58:56

标签: mysql sql database

我必须创建一个包含大量查询(大约150,000)的mysql查询

目前查询是:

UPDATE table SET activated=NULL
WHERE (
        id=XXXX
    OR  id=YYYY 
    OR  id=ZZZZ 
    OR  id=...
    ...
)
AND activated IS NOT NULL

你知道最好的方法吗?

2 个答案:

答案 0 :(得分:3)

如果您正在谈论成千上万的项目,那么IN条款可能无效。在这种情况下,您可能希望将项目插入临时表,然后与其一起进行更新,如下所示:

UPDATE table tb
JOIN temptable ids ON ids.id = tb.id
SET tb.activated = NULL

答案 1 :(得分:1)

UPDATE table 
SET activated = NULL
WHERE id in ('XXXX', 'YYYY', 'zzzz')
AND activated IS NOT NULL