0

我正在使用between日期,所以这样做会更慢:

select sum(amount) from my_table 
where pur_date between DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 1 YEAR), INTERVAL 1 DAY) 
and DATE_SUB(CURDATE(), INTERVAL 2 DAY);

或者这样做更快:

set @startdt = (select DATE_SUB(DATE_SUB(CURDATE(), INTERVAL 1 YEAR), INTERVAL 1 DAY));
set @enddt = (select DATE_SUB(CURDATE(), INTERVAL 2 DAY));

select sum(amount) from my_table where pur_date between @startdt and @enddt;

还是没有区别?我问的原因是,如果将函数直接放在查询中而不是将它们设置为变量,我不确定这些函数是否会为每一行运行。

我希望你能为我解决这个问题!

4

1 回答 1

0

第一个更快。

选择语句越多,执行中的程序越慢。

于 2013-06-13T15:11:51.033 回答