Teradata-セカンダリインデックス
テーブルに含めることができるプライマリインデックスは1つだけです。多くの場合、テーブルに他の列が含まれ、それを使用してデータに頻繁にアクセスするシナリオに遭遇します。Teradataは、これらのクエリに対して全表スキャンを実行します。セカンダリインデックスはこの問題を解決します。
セカンダリインデックスは、データにアクセスするための代替パスです。プライマリインデックスとセカンダリインデックスの間にはいくつかの違いがあります。
セカンダリインデックスはデータ配信に関与しません。
セカンダリインデックス値はサブテーブルに格納されます。これらのテーブルはすべてのAMPに組み込まれています。
セカンダリインデックスはオプションです。
これらは、テーブルの作成中またはテーブルの作成後に作成できます。
サブテーブルを作成するため、追加のスペースを占有します。また、新しい行ごとにサブテーブルを更新する必要があるため、メンテナンスも必要です。
セカンダリインデックスには2つのタイプがあります-
- 一意のセカンダリインデックス(USI)
- 非一意のセカンダリインデックス(NUSI)
一意のセカンダリインデックス(USI)
一意のセカンダリインデックスでは、USIとして定義された列に一意の値のみが許可されます。USIによる行へのアクセスは、2アンペアの操作です。
一意のセカンダリインデックスを作成する
次の例では、employeeテーブルのEmployeeNo列にUSIを作成します。
CREATE UNIQUE INDEX(EmployeeNo) on employee;
非一意のセカンダリインデックス(NUSI)
非一意のセカンダリインデックスでは、NUSIとして定義された列の値を重複させることができます。NUSIによる行へのアクセスは、オールアンプ操作です。
一意でないセカンダリインデックスを作成する
次の例では、employeeテーブルのFirstName列にNUSIを作成します。
CREATE INDEX(FirstName) on Employee;