Teradata Изменчивая таблица, созданная из select . Как получить тип данных Not Null?
Я очень думаю - я надеюсь на надежду. Но я хотел бы увидеть, есть ли проблеск здесь.... Когда вы создаете VT, как это
create multiset volatile table VT , no fallback,no log as
( sel
A.1, B.2 from A Join B on <conditon >
)
with data Primary Index (____) on commit preserve rows ;
Столбцы таблицы всегда равны NULLABLE, даже если столбцы, которые образуют VT, не равны NULL. Таким образом, в приведенном выше примере, например, A.1 B.2, столбцы NOT NULL в соответствии с DDL A и B (или я могу написать условие фильтрации в предложении sel для исключения NULLS). В любом случае дизайн таблицы VT не является разумным для определения того, что A.1 и B.2 НЕ являются NULL, поэтому сохраните их в VT.
Почему это имеет значение?
Поскольку создание столбца Not null, допускающего значение NULL, приводит к пустой проверке и накладным расходам обработки, когда VT присоединяется в следующем запросе. Поэтому я вынужден взять DDL с помощью оператора "без данных" и добавить NOT NULL в DDL, а затем выполнить отдельный оператор CT
Я что-то упускаю или это "просто так"
1 ответ
Если вы заранее знаете, какие столбцы не могут быть обнуляемыми, вы сможете указать их в определении таблицы следующим образом:
create multiset volatile table VT , no fallback,no log
(Col1 NOT NULL, Col2 NOT NULL)
as
( sel
A.1, B.2 from A Join B on <conditon >
)
with data Primary Index (____) on commit preserve rows ;