読者です 読者をやめる 読者になる 読者になる

crmprogrammer38の日記

プログラマのメモ

【TERADATA】 PRIMARY INDEXは、データの分散のキー

PRIMARY INDEXは分散の指定です

TERADATAは、データを分散して管理していて、その分散用のキーとしてPRIMARY INDEXを指定します。

CREATE SET TABLE SAMPLE
(
    ,LATINFIELD       CHAR(2)       CHARACTER SET LATIN CASESPECIFIC NOT NULL
    ,UNICODEFIELD     VARCHAR(9)    CHARACTER SET UNICODE CASESPECIFIC
)
UNIQUE PRIMARY INDEX
(
     LATINFIELD
);

上記ようにさらにuniqueを指定することもできて、いわゆるPrimaryKeyと同じ気がしますが、あくまで分散用のキーのPrimary IndexにUnique制約を追加したものになります。

 

PRIMARY INDEXに指定した項目の更新は避けよう

TERADATAはPPRIMARY INDEXで指定した項目のハッシュ値を元にデータを分散しています。なのでPRIMARY INDEXで指定した項目の値が変更されるとハッシュ値が変わりデータを再度ハッシュ値に基づき分散します。(再配置)

ファクトテーブルなど件数が多いテーブルのPRIMARY INDEXを更新すると非常に時間がかかります。

業務要件で洗い替えが必須要件なのであれば、洗い替えを行う項目をPRIMARY INDEXに指定するのはやめましょう。