什么是更好的使用:ADDTIME或简单的INTERVAL来创造时间?

时间:2012-10-11 12:14:48

标签: mysql

以下是两个示例查询:

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解析总是让它慢慢减慢,差异可以看得很清楚吗?

1 个答案:

答案 0 :(得分:2)

真正的问题是,这是否真的是您正在寻找的一种性能提升。运行100K次显示0.02秒的差异。因此,如果你运行它500万次,你可以节省一秒。

比较两者是不公平的,因为interval必须进行3次计算(小时/分钟/秒)。这会减慢速度。

ADDTIME()必须解析时间,这也会减慢它的速度。

然后,如果你正在寻找性能,请使用:

 NOW() + INTERVAL 3661 SECOND

但即使这样,你也可以节省毫秒数。如果这确实是您申请的瓶颈,那么您做得非常出色:)。