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 ;
Другие вопросы по тегам