当您运行类似于以下内容时:
UPDATE table SET datetime = NOW();
在具有 1 000 000 000 条记录的表上,查询需要 10 秒才能运行,所有行的时间是否完全相同(分钟和秒)还是不同的时间?换句话说,是查询开始的时间还是每行更新的时间?
我正在运行 MySQL,但我认为这适用于所有数据库。
当您运行类似于以下内容时:
UPDATE table SET datetime = NOW();
在具有 1 000 000 000 条记录的表上,查询需要 10 秒才能运行,所有行的时间是否完全相同(分钟和秒)还是不同的时间?换句话说,是查询开始的时间还是每行更新的时间?
我正在运行 MySQL,但我认为这适用于所有数据库。
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_now
“NOW() 返回一个常数时间,指示语句开始执行的时间。(在存储的例程或触发器中,NOW() 返回例程或触发语句开始执行的时间。)这不同于SYSDATE() 的行为,它返回从 MySQL 5.0.13 开始执行的确切时间。"
分配NOW()
给一个变量,然后用变量更新日期时间:
update_date_time=now()
现在像这样更新
UPDATE table SET datetime =update_date_time;
根据您的要求更正语法
它们应该具有相同的时间,更新应该是原子的,这意味着无论执行多长时间,该操作都应该像所有操作同时完成一样发生。
如果您遇到不同的行为,是时候更换另一个 DBMS。
sqlite的答案是
update TABLE set mydatetime = datetime('now');
以防其他人正在寻找它。