Teradata中的易失性表“变量”

时间:2018-09-22 16:30:34

标签: performance subquery teradata temp-tables

我正在Teradata中使用易失性表,因为这是获得变量功能的唯一方法。我将其用于开始和结束日期,然后在子查询中使用。我这样做是为了只需要在一个地方更改日期即可。

CREATE VOLATILE TABLE MyTable AS
(
    SELECT
    DATE as runDate,
    runDate - 30 as startDate,
    runDate -1 endDate
) WITH DATA PRIMARY INDEX (runDate)
ON COMMIT PRESERVE ROWS;

这允许易失性表一直存在直到我的会话结束或对其进行修改。
然后,我将其用于此类

 SELECT
 myAVG
 from
 (
    SELECT 
    AVERAGE(columnName) as myAVG
    FROM
    WHERE readingDate > MyTable.startDate
    AND readingDate < MyTable.enddDate
 ) a

我注意到的是,使用易失性表变量明显要比直接使用日期慢

WHERE readingDate > DATE-30
AND readingDate < DATE-1

我没想到的。

在人们开始说:“为什么不只在主查询中计算平均值?”之前,我将其用于说明目的,实际上可能有几个不同的子查询。

以这种方式使用变量是否缺少某些东西?

0 个答案:

没有答案