複数値圧縮を使用すると列レベルでデータを圧縮できます。この圧縮は、ロスレスの、ディクショナリ ベースの圧縮スキーマです。MVCでは、CREATE TABLE/ALTER TABLE文で列を定義するときに、圧縮する値のリストを指定します。圧縮リスト内の値と一致する値を列に挿入すると、実際の値が格納される代わりに対応する圧縮ビットが設定されるので、ディスク記憶装置の領域が節約されます。
圧縮の最有力候補は、各列内の最頻出値になります。MVCは、多数の繰り返しがある列に対しては優れた圧縮スキーマです。
MVCが、特定の列内のデータに対しては効果のない圧縮スキーマになる場合は、アルゴリズム圧縮(ALC)を使用して列を圧縮してください。MVCを単独で指定することも、MVCとALCの両方を同じ列に指定することもできます。両方を同じ列に定義すると、ALCは、MVCで圧縮対象になる値のリストで指定されていない非ヌルの値にのみ適用されます。MVCはブロック レベル圧縮(BLC)と一緒に使用することもできます。
MVCは、次のデータ型を含んでいる列の圧縮に使用できます。
- 数値型のデータ型
- BYTE
- VARBYTE
- CHARACTER
- VARCHAR
- DATE日付値を圧縮するには、ANSI DATE形式(DATE 'YYYY-MM-DD')を使用した日付リテラルとして、値を指定する必要があります。例えば、次のようになります。
COMPRESS (DATE '2000-06-15')
- TIMEおよびTIME WITH TIME ZONE
- TIMESTAMPおよびTIMESTAMP WITH TIME ZONE
TIME値またはTIMESTAMP値を圧縮するには、TIMEまたはTIMESTAMPリテラルとして値を指定する必要があります。例えば、次のようになります。
COMPRESS (TIME '15:30:00') COMPRESS (TIMESTAMP '2006-11-23 15:30:23')
さらに、COMPRESS (NULL)は次のデータ型を含んでいる列に使用できます。
- ARRAY
- PERIOD
- 非LOBのDISTINCT型またはSTRUCTURED型UDT