N行后的MySQL更新

Hap*_*der 7 mysql sql performance limit sql-update

我需要更新一个表,除了它的前1000个记录.我的查询是这样的:

UPDATE tableA 
SET price = 100 
WHERE price = 200 AND
      item_id =12 AND 
      status NOT IN (1,2,3);
Run Code Online (Sandbox Code Playgroud)

我知道子查询approcah将在这里工作,但我有一个巨大的表,其中200000条记录满足WHERE条件,并且它正在增长.所以我认为如果我遵循子查询方法,它将不会随着DB的增长而扩展.

此外,我已经看到LIMITUPDATE查询中指定,但它达到了一定的限制.在我的情况下,它是在一定的偏移后,应更新所有记录.

还可以找到总计数并使用LIMIT指定它.但是COUNT()查询失败了.

Rah*_*hul 0

我不确定这是否是一个正确的解决方案,但如果您ID的表中有一个唯一的列;举例来说ID,那么您可以很容易地放置谓词说WHERE ID > 1000。它将仅考虑从第 1001 个位置开始的行,例如

UPDATE tableA SET price = 100 
WHERE price = 200 
AND item_id = 12
AND ID > 1000
Run Code Online (Sandbox Code Playgroud)