Летучий стол "Переменные" в Teradata - PullRequest
0 голосов
/ 22 сентября 2018

Я использую энергозависимую таблицу в Teradata, поскольку это единственный способ получить функциональность variable .Я использую его для дат начала и окончания, которые затем используются в подзапросах.Я делаю это так, что для изменения даты требуется только одно место.

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

Я заметил, что использование изменчивой таблицы переменная заметно * на 1012 * медленнее , чем если бы я использовал даты напрямую

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

чего я бы не ожидал.

Прежде чем люди начнут говорить: «Почему бы вам просто не вычислить среднее значение в основном запросе?», Я использую это в иллюстративных целях, и тамна практике может быть несколько разных подзапросов.

Есть ли что-то, чего я упускаю при использовании переменных таким образом?

...