我正在使用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;
还是没有区别?我问的原因是,如果将函数直接放在查询中而不是将它们设置为变量,我不确定这些函数是否会为每一行运行。
我希望你能为我解决这个问题!