有时可以观察到宏中的单个指令比Teradata中的整个宏执行得更快?这只是一种错觉还是背后有任何逻辑?我是Teradata的新手,如果有人从基础知识中解释原因,我将不胜感激。
答案 0 :(得分:2)
宏与多语句请求(MSR)完全相同。
当您EXPLAIN EXEC mymacro
时,您会注意到所有宏中的语句已完成,然后是最后的END TRANSACTION
步骤。
现在,如果您执行类似DELETE ALL
的独立事务,则快速路径删除,一种TRUNCATE
,因为优化程序知道它& #39;是该表的最后修改并且已经提交。
然后,您可能在该表中有INSERT SELECT
,这也是快速路径,因为该表在事务开始时为空。
现在你把它们放在一个宏中:DELETE
不上次修改而INSERT SELECT
不进入空表,所以这两个陈述都是Transient Journaled。当然这要慢得多......