列内の固有値のセットに対して複数値圧縮を指定します。
COMPRESSを使用すると、圧縮される値が割り当てられる行の割合に応じて領域を節約できます。
- BYTE
- VARBYTE
- DATE
- CHARACTER
- VARCHAR
- GRAPHIC
- VARGRAPHIC
- TIME
- TIME WITH TIME ZONE
- TIMESTAMP
- TIMESTAMP WITH TIME ZONE
- すべての数値型
- DATE
- CHARACTERおよびGRAPHIC
- VARCHARおよびVARGRAPHIC
- BYTE
- VARBYTE
- BLOB
- CLOB
- ARRAY/VARRAY
- STRUCTURED型UDT
- Period
- XML
- Geospatial
- JSON
- DATASET
- テーブルに対するプライマリ インデックス列セットのメンバーである任意の列。
- 行レベル セキュリティ制約列。
- パーティション列。
圧縮属性が同じソース テーブルとターゲット テーブルには、高速パスのINSERT…SELECTを使用できます。COMPRESS属性の定義が一致していない列は、高速パスのINSERT … SELECT操作に加えることはできません。COMPRESS属性の定義が一致しない圧縮列を含むターゲット テーブルに対してINSERT…SELECTを実行すると、最適化ルーチンが作成するアクセス計画には、高速パスの最適化が指定されなくなります。
通常は、複数値圧縮によってパフォーマンスが向上すれば、高速パスのINSERT … SELECTを利用できないコストが相殺されます。
ALTER TABLEを参照してください。
複数値圧縮とアルゴリズム圧縮は、どちらの順序で指定してもかまいません。
複数値圧縮の詳細は、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。
COMPRESS属性の詳細について、<Teradata Vantage™ - データ タイプおよびリテラル、B035-1143>を参照してください。
- constant
- 指定した値または値のリストが圧縮されます。
- NULL
- NULLは列に対して圧縮されます。
例: 複数値圧縮の指定
CREATE TABLE employee ( emp_no INTEGER NOT NULL, emp_name CHARACTER(30) NOT NULL COMPRESS ('Smith', 'Wong', 'Rodriguez') ... dob DATE COMPRESS (NULL, DATE '1972-02-29', DATE '1976-02-29') ...);
例: 複数値の圧縮の明示的列データ型と暗黙的データ型との矛盾
この例は、圧縮される値を含む列に指定された明示的な型とは異なる暗黙的なデータ型で圧縮数値データ値を指定するときの問題を示しています。この問題は、DECIMAL/NUMERICデータ型とREAL/FLOAT/DOUBLE PRECISIONデータ型の間の双方向変換時に制限されます。
この例では、列は明示的FLOATデータ型で定義されているが、圧縮値は暗黙的DECIMALデータ型で指定されている場合を示しています。
CREATE TABLE comptest, NO FALLBACK ( col_1 INTEGER NOT NULL, col_2 FLOAT COMPRESS 0.58) PRIMARY INDEX (col_1);
この例では、列は明示的DECIMALデータ型で定義されているが、圧縮値は暗黙的FLOATデータ型で指定されている場合を示しています。
CREATE TABLE comptest3, NO FALLBACK ( col_1 INTEGER NOT NULL, col_2 DECIMAL(3,2) COMPRESS 0.07E0 ) PRIMARY INDEX (col_1);
列のデータ型(DECIMAL)が指定されている圧縮値の暗黙的データ型(FLOAT)と異なるため、この例はエラーを返します。