以下是两个示例查询:
SELECT NOW(), NOW() + INTERVAL 1 HOUR + INTERVAL 1 MINUTE + INTERVAL 1 SECOND;
SELECT NOW(), ADDTIME( NOW(), '1:01:01' );
这两个查询之间是否存在任何差异?我的意思是,在性能或最佳实践中使用?
据我测试,INTERVAL
似乎有更长的执行时间。
编辑: 100'000循环的结果总是出现如下:
Interval: 8.5930590629578 seconds.
Addtime: 8.2951309680939 seconds.
SELECT NOW(), NOW() + 3661 SECOND;
Single interval: 8.3964569568634 seconds.
Interval: 9.1104879379272 seconds.
Addtime: 8.7062540054321 seconds.
EDIT2: 新示例:
SELECT NOW(), NOW() + 1 SECOND;
SELECT NOW(), ADDTIME( NOW(), '0:00:01' );
时间结果:
Single interval: 8.4611599445343 seconds.
Addtime: 8.7186510562897 seconds.
ADDTIME
解析总是让它慢慢减慢,差异可以看得很清楚吗?
答案 0 :(得分:2)
真正的问题是,这是否真的是您正在寻找的一种性能提升。运行100K次显示0.02秒的差异。因此,如果你运行它500万次,你可以节省一秒。
比较两者是不公平的,因为interval
必须进行3次计算(小时/分钟/秒)。这会减慢速度。
ADDTIME()
必须解析时间,这也会减慢它的速度。
然后,如果你正在寻找性能,请使用:
NOW() + INTERVAL 3661 SECOND
但即使这样,你也可以节省毫秒数。如果这确实是您申请的瓶颈,那么您做得非常出色:)。