我需要连接来自多个SQL函数的返回表。在这些SQL函数中,它们使用一堆具有相同名称的临时表(例如tmp_result、tmp_datetime等)。在每个sql函数中,都有一些语句用于在创建临时表之前删除临时表(如果存在)。当我连接这些sql函数的返回表时,连接部分是否按顺序计算?以下面的通用查询为例,我是否需要担心my_function_1创建的tmp_result表会被my_function_2中的drop table语句过早地删除?我做了一些测试,结果看起来很好。但我想知道是否有潜在的问题。- 谢谢-谢谢
select a.*, b.*
from my_function_1(1,2,3) a
join my_function_2(4,5,6) b on a.id=b.id
order by 1;
字符串
1条答案
按热度按时间zazmityj1#
通过一些测试,我认为SQL函数是按顺序计算/调用的。只有在前一个完成后,才会调用下一个。在我的测试中,我在每个sql函数的开头和结尾使用clock_timestamp()来监视调用时间和顺序。我做了一个sql函数,需要很长时间才能完成,并在连接序列中移动它。我所有的测试都表明SQL函数是按顺序计算的。因此,即使在不同的SQL函数中使用相同的临时表名称,也应该没问题。