Teradata-secondary-index

提供:Dev Guides
2020年6月22日 (月) 21:42時点におけるMaintenance script (トーク | 投稿記録)による版 (Imported from text file)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先:案内検索

Teradata-セカンダリインデックス

テーブルに含めることができるプライマリインデックスは1つだけです。 多くの場合、テーブルに他の列が含まれるシナリオに出くわし、それを使用してデータに頻繁にアクセスします。 Teradataは、これらのクエリに対して全表スキャンを実行します。 セカンダリインデックスはこの問題を解決します。

セカンダリインデックスは、データにアクセスするための代替パスです。 プライマリインデックスとセカンダリインデックスにはいくつかの違いがあります。

  • セカンダリインデックスはデータの配信には関与しません。
  • セカンダリインデックス値はサブテーブルに格納されます。 これらのテーブルはすべてのAMPに組み込まれています。
  • セカンダリインデックスはオプションです。
  • テーブルの作成中またはテーブルの作成後に作成できます。
  • サブテーブルを作成するため追加のスペースを占有し、新しい行ごとにサブテーブルを更新する必要があるため、メンテナンスも必要です。

二次インデックスの2種類があります-

  • 一意のセカンダリインデックス(USI)
  • 非ユニークセカンダリインデックス(NUSI)

一意のセカンダリインデックス(USI)

一意のセカンダリインデックスでは、USIとして定義された列に一意の値のみが許可されます。 USIによる行へのアクセスは、2アンペアの操作です。

一意のセカンダリインデックスを作成する

次の例では、従業員テーブルのEmployeeNo列にUSIを作成します。

CREATE UNIQUE INDEX(EmployeeNo) on employee;

一意でないセカンダリインデックス(NUSI)

Non-Unique Secondary Indexを使用すると、NUSIとして定義された列の値を複製できます。 NUSIによる行へのアクセスは、オールアンプ操作です。

一意でないセカンダリインデックスを作成する

次の例では、employeeテーブルのFirstName列にNUSIを作成します。

CREATE INDEX(FirstName) on Employee;