51

当您运行类似于以下内容时:

UPDATE table SET datetime = NOW();

在具有 1 000 000 000 条记录的表上,查询需要 10 秒才能运行,所有行的时间是否完全相同(分钟和秒)还是不同的时间?换句话说,是查询开始的时间还是每行更新的时间?

我正在运行 MySQL,但我认为这适用于所有数据库。

4

4 回答 4

52

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_now

“NOW() 返回一个常数时间,指示语句开始执行的时间。(在存储的例程或触发器中,NOW() 返回例程或触发语句开始执行的时间。)这不同于SYSDATE() 的行为,它返回从 MySQL 5.0.13 开始执行的确切时间。"

于 2008-10-12T07:14:12.537 回答
9

分配NOW()给一个变量,然后用变量更新日期时间:

update_date_time=now()

现在像这样更新

UPDATE table SET datetime =update_date_time;

根据您的要求更正语法

于 2016-07-04T13:51:12.490 回答
1

它们应该具有相同的时间,更新应该是原子的,这意味着无论执行多长时间,该操作都应该像所有操作同时完成一样发生。

如果您遇到不同的行为,是时候更换另一个 DBMS。

于 2008-10-12T07:12:38.767 回答
0

sqlite的答案是

update TABLE set mydatetime = datetime('now');

以防其他人正在寻找它。

于 2012-07-20T22:35:50.420 回答