2

给定以下两个 mysql 查询:

SELECT * FROM table1 WHERE DATE_ADD(datetimecolumn,INTERVAL 24 HOUR)>NOW()

SELECT * FROM table1 WHERE DATE_SUB(NOW(),INTERVAL 24 HOUR)>datetimecolumn

哪个查询会更快?

4

2 回答 2

2

我想你想知道的:

第二个应该明显更快,因为datetimecolumn可以直接用于索引操作。如果没有索引,我想说差异应该可以忽略不计(时间操作和函数调用比从磁盘检索数据要快得多)。

你真正问的是:

这两个查询不等价(它们不返回相同的记录)。

DATE_ADD(datetimecolumn,INTERVAL 24 HOUR)>NOW()

检索从现在起 24 小时内更新的记录(因此,从昨天开始插入的所有记录)。

第二

DATE_SUB(NOW(),INTERVAL 24 HOUR)>datetimecolumn

检索从现在起 24 小时后(过去两天或更长时间)的记录。

所以在那种情况下,哪个查询更快,答案是它取决于有多少记录......

于 2012-11-01T11:44:01.687 回答
1

下面会很快。

下面的可以应用 的索引datetimecolumn,而上面的不能。

DATE_SUB(NOW(),INTERVAL 24 HOUR)只需要计算一次,而DATE_ADD(datetimecolumn,INTERVAL 24 HOUR)需要对每条记录做一次。

于 2012-11-01T11:42:45.593 回答