在触发器之前和在UPDATE CURRENT_TIMESTAMP之前的性能差异-MySQL

时间:2018-09-28 10:58:35

标签: mysql datetime query-performance

因此,我和我的朋友在使用BEFORE触发器或ON UPDATE CURRENT_TIMESTAMP用于表以更新updated_at列的值方面存在争论。顾名思义,该列的目的只是存储上次更新行的时间。

他为此设置了一个触发器- 活动-BEFORE

  BEGIN
       set NEW.updated_at := current_timestamp();
  END

我认为我们应该使用ON UPDATE CURRENT_TIMESTAMP属性,因为这是MySQL为AFTER事件提供的默认触发器。

我尝试搜索文档中的性能差异,但没有发现任何问题。 有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

毫无疑问,ON UPDATE CURRENT_TIMESTAMP方法比触发器更快(尤其是在高负载下),因为它更简单。您当然可以将其视为默认触发器,但实际上它内置于数据库的UPDATE代码中。 DBMS中的执行路径不需要任何特殊的逻辑来处理事务,而触发器则需要。

时间戳更新与任何其他更新同时发生;无论是之前还是之后。如果更新(以事务方式)回滚,则时间戳记更改会与其余已更改的列一起回滚

对于将来的程序员来说,理解表也稍微容易一些,因为他们可以查看列定义,而不必知道触发器。 (但这是一个见解的问题。)

但是,还有更多重要的设计决策需要争论。 (也是一个问题。)