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

Jim*_*ket 12 mysql

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

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

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

提前致谢

Kon*_*rak 15

不,MySQL很聪明,也不会慢.不要经历检查的麻烦,MySQL会为你做.

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

但,

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


Lie*_*ers 9

为什么不用

UPDATE  dbo.Authors
SET     AuthorType = 10
WHERE   AuthorType <> 10
Run Code Online (Sandbox Code Playgroud)

并拥有两全其美.

请注意,对于任何现代数据库引擎而言,几十万条记录应该没有问题.

次要编辑