在Teradata中执行宏和执行其中包含的指令有什么区别?

时间:2015-05-21 06:13:49

标签: macros teradata

有时可以观察到宏中的单个指令比Teradata中的整个宏执行得更快?这只是一种错觉还是背后有任何逻辑?我是Teradata的新手,如果有人从基础知识中解释原因,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

宏与多语句请求(MSR)完全相同。

当您EXPLAIN EXEC mymacro时,您会注意到所有宏中的语句已完成,然后是最后的END TRANSACTION步骤。

现在,如果您执行类似DELETE ALL的独立事务,则快速路径删除,一种TRUNCATE,因为优化程序知道它& #39;是该表的最后修改并且已经提交。

然后,您可能在该表中有INSERT SELECT,这也是快速路径,因为该表在事务开始时为空。

现在你把它们放在一个宏中:DELETE 上次修改而INSERT SELECT 进入空表,所以这两个陈述都是Transient Journaled。当然这要慢得多......