Teradata-プライマリインデックス
プライマリインデックスは、Teradataのどこにデータが存在するかを指定するために使用されます。これは、どのAMPがデータ行を取得するかを指定するために使用されます。Teradataの各テーブルには、プライマリインデックスを定義する必要があります。プライマリインデックスが定義されていない場合、Teradataは自動的にプライマリインデックスを割り当てます。プライマリインデックスは、データにアクセスするための最速の方法を提供します。プライマリには最大64列を含めることができます。
プライマリインデックスは、テーブルの作成中に定義されます。プライマリインデックスには2つのタイプがあります。
- 一意のプライマリインデックス(UPI)
- 非一意プライマリインデックス(NUPI)
一意のプライマリインデックス(UPI)
テーブルにUPIがあると定義されている場合、UPIと見なされる列に重複する値があってはなりません。重複する値が挿入された場合、それらは拒否されます。
一意のプライマリインデックスを作成する
次の例では、列EmployeeNoを一意のプライマリインデックスとして使用してSalaryテーブルを作成します。
CREATE SET TABLE Salary (
EmployeeNo INTEGER,
Gross INTEGER,
Deduction INTEGER,
NetPay INTEGER
)
UNIQUE PRIMARY INDEX(EmployeeNo);
非一意プライマリインデックス(NUPI)
テーブルにNUPIがあると定義されている場合、UPIと見なされる列は重複する値を受け入れることができます。
一意でないプライマリインデックスを作成する
次の例では、列EmployeeNoを非一意のプライマリインデックスとして持つ従業員アカウントテーブルを作成します。従業員はテーブルに複数のアカウントを持つことができるため、EmployeeNoは非一意のプライマリインデックスとして定義されます。1つは給与勘定用で、もう1つは償還勘定用です。
CREATE SET TABLE Employee _Accounts (
EmployeeNo INTEGER,
employee_bank_account_type BYTEINT.
employee_bank_account_number INTEGER,
employee_bank_name VARCHAR(30),
employee_bank_city VARCHAR(30)
)
PRIMARY INDEX(EmployeeNo);