mysql UPDATE语句 - 相同值的开销?

时间:2010-07-06 14:06:58

标签: mysql

我有一个包含数十万条记录的大型MYSQL数据库。我想更新其中的一个字段,但我不知道该字段是否已更新。

如果我调用一个设置authortype = 10且authortype已经为10的更新语句,这会比单独的查询更快地选择那些不是authortype = 10然后更新它们吗?

换句话说,如果我设置的值等于它已经存在的值,那么比将值更新为新值更快吗?再次,这是有大量和大量的记录,我希望有效率。

提前致谢

3 个答案:

答案 0 :(得分:14)

不, MySQL很聪明,不会慢一些。不要经历检查的麻烦,MySQL会为你做。

如果将列设置为当前的值,MySQL会注意到这一点并且不会更新它。不执行写入操作。 (Source

BUT,

MySQL可以在要更新的列上使用WHERE子句来确定要使用的索引(以及要检查的行),在这种情况下,它可能会加快UPDATE操作。 如果您的列已编入索引,请将其包括在内

答案 1 :(得分:8)

为什么不使用

UPDATE  dbo.Authors
SET     AuthorType = 10
WHERE   AuthorType <> 10

并且拥有两全其美。

请注意,对于任何现代数据库引擎而言,几十万条记录都不会造成任何问题。

次要编辑

答案 2 :(得分:0)

如果您的表包含数十万行,则无需担心需要多长时间。决定的时间将远远大于完成它的时间。

如果有数亿行,那可能是另一回事。