Mysql 使用查询或设置中的函数作为变量是否存在速度差异?
我在日期间使用了Mysql 使用查询或设置中的函数作为变量是否存在速度差异?,mysql,Mysql,我在日期间使用了,所以这样做是否较慢: 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
,所以这样做是否较慢:
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;
或者这样做更快:
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;
还是说这没什么区别?我问这个问题的原因是,如果函数直接放在查询中,而不是将它们设置为变量,我不确定是否每行都会运行这些函数
我希望你能帮我解决这个问题 第一个更快
select语句越多,程序执行越慢。没有多大区别。但是为什么不自己进行基准测试呢?如果你浏览了1000多万行,我正在做的事情会怎么样呢?@RyanNaddy SET和SELECT之间没有直接的区别。然而,SELECT在一次射击中完成多个任务的能力确实让它在速度上比SET稍有优势。请参见此处:如果函数的值不依赖于行,则在大多数情况下,Optimizer将在执行前计算其值。