17.00 - 17.05 - 列データ型または複数値圧縮の変更 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)

列ごとに、nullおよび255個までの個別の値を圧縮できます。テーブルごとに無制限の数の列を圧縮することができます。圧縮される値は各列のテーブル ヘッダーに追加されるため、この値はシステムでの行の最大長によって制約されます。

複数値圧縮のタイプ 説明
単一値 値が明示的に指定されない場合、デフォルトはNULLです。
複数値
  • デフォルト値はなく、明示的にすべての値を指定する必要があります。ただし、列をNULL受入可能にできる場合、明示的に指定されていない場合でも、null圧縮は有効です。
  • 圧縮する値をどのような順序でも列に対して指定できます。
  • 列に対し、1つの複数値圧縮リストに値を1つだけ指定できます。

既存のテーブルに複数値圧縮を含む新しい列を追加したり、既存の列に複数値圧縮を追加したりすることができます。また、NO COMPRESS属性を指定することにより既存の列の圧縮を削除することができます。

列にNOT NULLの制約が指定されている場合、圧縮リスト内にリテラルのNULLを指定することはできません。

COMPRESS属性を指定して定義した列を高速パスのINSERT ... SELECT操作に加えることはできません。したがって、複数値圧縮列を含んだターゲット テーブルに対してINSERT ... SELECTリクエストを実行すると、最適化ルーチンは、自身で作成するアクセス計画に高速パスの最適化を指定しません。

通常、高速パスのINSERT ... SELECTを利用できない場合のパフォーマンスの低下は、複数値圧縮を利用した場合のパフォーマンスの向上では補いきれません。

複数値の圧縮は、次のデータ型の列ではサポートされません。
  • 識別列
  • LONG VARCHAR
  • BLOB
  • CLOB

新しいテーブルのいずれかの列のデータ型が、既存のテーブルの対応するフィールドの値と互換性がない場合は、別々のINSERTリクエストを使用して、各行をロードする必要があります。

すべての新しいデータ型がすべての既存の値と互換性がある場合(例えば、COMPRESS属性だけが変更される場合)は、INSERT … SELECTリクエストを使用することにより、1つのリクエストですべての行をコピーできます。Teradata Vantage™ - SQLデータ操作言語、B035-1146を参照してください。

セッション モードの変更については、列の複数値圧縮の追加または変更に関するルールも参照してください。

複数値圧縮、およびパフォーマンスの最適化とディスク容量の節約のための圧縮アプリケーションの詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。