Я использую энергозависимую таблицу в 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
чего я бы не ожидал.
Прежде чем люди начнут говорить: «Почему бы вам просто не вычислить среднее значение в основном запросе?», Я использую это в иллюстративных целях, и тамна практике может быть несколько разных подзапросов.
Есть ли что-то, чего я упускаю при использовании переменных таким образом?