0

以下是两个示例查询:

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总是会减慢它的速度,以至于可以很好地看出差异?

4

1 回答 1

2

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

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

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

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

 NOW() + INTERVAL 3661 SECOND

但即便如此,您也可以节省几毫秒。如果这确实是您的应用程序的瓶颈,那么您做得很好:)。

于 2012-10-11T14:27:29.510 回答