17.00 - 17.05 - プライマリ インデックス付け、行パーティション化、列パーティション化、NoPIテーブル、およびセカンダリ インデックスについて - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)

CREATE TABLEのこの句では、テーブルに対して、0個または1個のプライマリ インデックスと、オプションでセカンダリ インデックスを作成できます。

テーブルに対して作成できるプライマリ インデックスは1つまでで、オプションとしてパーティション化することができます。パーティション化オプションは、グローバル一時テーブル、揮発テーブル、およびプライマリ インデックスを持つ標準実テーブルに対して使用できます。グローバル一時トレース テーブルはパーティション化できません。CREATE TABLE(グローバルおよび一時)を参照してください。

テーブルにプライマリ インデックスが必要な場合は、プライマリ インデックスを必ず明示的に定義する必要があります。テーブルにプライマリ インデックスがないな場合にも、同じことが当てはまります。

非パーティション テーブルと列パーティション テーブル(パーティション化されていないNoPIテーブルおよび列パーティション テーブルを参照)を例外として、Teradata Databaseは、プライマリ インデックス値の行ハッシュに基づいてAMPに行を割り当てるので、プライマリ インデックスのあるテーブルに非固有のプライマリ インデックスが定義されている場合、テーブル行をほぼ均等に分散する列セットを選択することが重要です。テーブルがパーティション化されるかどうかにかかわらず、このことは非常に重要です。テーブルのプライマリ インデックスとして列セットを選択することをデータベースに許可すると、複数のAMPへの分散の均等化を制御できなくなり、テーブルにパフォーマンスの問題が発生する可能性があります。

最適化ルーチンはインデックスの定義を使用して、もっともコストがかからないデータ アクセスの方法を計画します。AMPソフトウェアはこれを利用して、最大限コストのかからない方法でディスク上の行に物理的にアクセスします。

テーブルを作成した後で、このテーブルに付加的なセカンダリ インデックスを定義するには、CREATE INDEX文を使用します(CREATE INDEXを参照)。

結合インデックスを作成してこのテーブルに組み込むには、CREATE JOIN INDEX文を使用します(CREATE JOIN INDEXを参照)。

テーブルにハッシュ インデックスを作成するには、CREATE HASH INDEX文を使用します(CREATE HASH INDEXを参照)。

インデックス定義内ではBLOB列、CLOB列、PERIOD列、またはGeospatial列を参照できないことに注意してください。これは、以下の句のいずれにも、BLOB列、CLOB列、PERIOD列、またはGeospatial列への参照を指定できないということです。

プライマリ インデックスとセカンダリ インデックスの詳細については、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。