例: CUSTOMER テーブルの圧縮エンコードの選択 - Amazon Redshift

例: CUSTOMER テーブルの圧縮エンコードの選択

次のステートメントは、さまざまなデータ型の列を含む CUSTOMER テーブルを作成します。この CREATE TABLE ステートメントは、これらの列に対する圧縮エンコードの数ある可能な組み合わせの 1 つを示しています。

create table customer( custkey int encode delta, custname varchar(30) encode raw, gender varchar(7) encode text255, address varchar(200) encode text255, city varchar(30) encode text255, state char(2) encode raw, zipcode char(5) encode bytedict, start_date date encode delta32k);

次の表は、CUSTOMER テーブルに対して選択された列エンコードを示し、それぞれの選択内容について説明しています。

データ型 エンコード 説明
CUSTKEY int delta CUSTKEY は、連続した一意の整数値から成ります。差は 1 バイトとなるので、DELTA を選択するのが適切です。
CUSTNAME varCHAR(30) raw CUSTNAME には、繰り返し値がほとんどない大きなドメインがあります。いずれの圧縮エンコードも効果的でないと考えられます。
GENDER varchar(7) text255 GENDER は、多数の繰り返し値を含む非常に小さなドメインです。同じ単語が繰り返し出現する VARCHAR 列には、text255 が適しています。
ADDRESS varchar(200) text255 ADDRESS は大きなドメインですが、Street、Avenue、North、South など、繰り返しの単語が多数含まれます。同じ単語が繰り返し出現する VARCHAR 列を圧縮するには、text255 と text32k が有用です。列が短いので、text255 を選択するのが適切です。
CITY varCHAR(30) text255 CITY は、いくつかの繰り返し値を含む大きなドメインです。特定の市の名前が、他の市の名前よりもかなり頻繁に使用されます。ADDRESS と同じ理由により、text255 を選択するのが適切です。
STATE char(2) raw 米国では、STATE は 50 個の 2 文字値の正確なドメインです。bytedict エンコードによって多少圧縮されるものの、列サイズが 2 文字のみであるため、データの解凍時のオーバーヘッドを考慮すると圧縮する必要はそれほどないと考えられます。
ZIPCODE char(5) bytedict ZIPCODE は、50,000 個未満の一意の値を含む既知のドメインです。特定の郵便番号が、他の郵便番号よりもかなり頻繁に出現します。bytedict エンコードは、数に制限のある一意の値が列に含まれる場合に非常に効果的です。
START_DATE date delta32k デルタエンコードは、特に行が日付順にロードされる場合に、日時列にとって非常に有用です。