Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用查询或设置中的函数作为变量是否存在速度差异?_Mysql - Fatal编程技术网

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将在执行前计算其值。