使用查询中的函数或设置为变量是否有任何速度差异?

时间:2013-06-13 15:09:06

标签: mysql

我在约会时使用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;

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

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

1 个答案:

答案 0 :(得分:0)

第一个更快。

更多是select语句,执行程序更加迟钝。