我在很多场合使用过此查询,从未遇到过问题。我只想知道这是用1个查询更新10,000多行时的最佳选择吗?
我正在更新并更改邮政编码数据库,其中一些可能会变得非常大。
这就是我正在使用的(想象它是10,000多个邮政编码)
UPDATE postalcodes
SET user = CASE postal
WHEN 'M4C 1A1' THEN '1'
WHEN 'M4C 1A2' THEN '1'
WHEN 'M4C 1A3' THEN '1'
END
WHERE postal IN ('M4C 1A1','M4C 1A2','M4C 1A3')
在所有情况下,更新USER时始终都是相同的。
我是正确地做到这一点还是有更快,优化的解决方案?感谢。
答案 0 :(得分:0)
因为这会影响1000行,所以你可以将其作为交易。
如果在某些事情发生之间有些事情已经更新而有些事情没有更新,你必须再次检查。
如果使用事务提交和回滚是安全的,
你可以试试。但db引擎应该是innodb。你必须从Myisam改变它
答案 1 :(得分:0)
您可以在已设置值的情况下优化案例,这样您就不必费心更新不需要它的行。
UPDATE postalcodes
SET user = 1
WHERE postal IN ('M4C 1A1','M4C 1A2','M4C 1A3') and (user <> 1)