我有一个包含数十万条记录的大型MYSQL数据库。我想要更新其中的大量字段,但我不知道该字段是否已更新。
如果我调用一个update语句,将authortype=10和AuthorType值设置为10,这是否比执行一个单独的查询来只选择那些不是authortype=10的,然后更新它们更快?
换句话说,如果我将一个值设置为等于它已经存在的值,这是否比我将一个值更新为新的值更快?再一次,这是与吨和吨的记录,我想要有效率。
提前感谢
发布于 2010-07-06 22:20:57
为什么不直接使用
UPDATE dbo.Authors
SET AuthorType = 10
WHERE AuthorType <> 10两全其美。
请注意,对于任何现代数据库引擎来说,几十万条记录应该不会造成问题。
次要编辑
发布于 2010-07-06 22:22:38
不,MySQL很聪明,不会比慢。不要费心去检查它,MySQL会帮你做的。
如果将列设置为其当前值,MySQL会注意到这一点,并且不会更新它。不执行任何写入操作。(Source)
但,
MySQL可以在要更新的列上使用WHERE子句来确定要使用哪个索引(以及要检查哪些行),在这种情况下,它可能会加快更新操作的速度。如果您的列已建立索引,请务必将其包括在中。
发布于 2010-07-06 22:25:50
如果您的表包含数十万行,则不值得担心需要多长时间。做决定的时间会比做决定的时间要长得多。
如果有数亿行数据,情况可能就不同了。
https://stackoverflow.com/questions/3186908
复制相似问题