代码之家  ›  专栏  ›  技术社区  ›  JiminyCricket

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

  •  11
  • JiminyCricket  · 技术社区  · 15 年前

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

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

    换句话说,如果我将一个值设置为已经存在的值,这是否比我将一个值更新为新的值快?再说一遍,这是一大堆的记录,我想提高效率。

    提前谢谢

    3 回复  |  直到 15 年前
        1
  •  9
  •   Lieven Keersmaekers    14 年前

    为什么不用呢

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

    两者兼备。

    次要编辑

        2
  •  16
  •   Community CDub    5 年前

    不, MySQL很聪明,不会慢下来 . 别费心去检查,MySQL会帮你做的。

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

    但是,

    MySQL可以在要更新的列上使用WHERE子句来确定要使用哪个索引(从而检查哪些行),在这种情况下,它可能会加快更新操作。

        3
  •  0
  •   Brian Hooper    15 年前

    如果您的表包含数十万行,则不必担心需要多长时间。做出决定所需的时间将远远超过仅仅做决定所需的时间。