ハッシュ インデックスに対してパーティション プライマリ インデックスを作成することはできませんが、場合によっては、行パーティション プライマリ インデックスを持つテーブルにハッシュ インデックスを作成できます。行パーティションPIが定義されたテーブルにハッシュ インデックスを作成するためのルールは、以下のとおりです:
- 行パーティションPIテーブルにハッシュ インデックスを定義するには、明示的な列リストを含むORDER BY句を指定することも必要です。
- 列リストには、BLOB、CLOB、PERIOD、または地理空間列を含めることはできません。
- テーブルのパーティションがPERIOD境界関数に定義されている場合は、行パーティションPIテーブルにハッシュ インデックスを定義することはできません。
たとえば、BEGIN境界関数に基づいたパーティション式を使用して、次の行パーティションPIテーブルを作成したとします。
CREATE TABLE hash_idx_ppi ( i INTEGER j INTEGER, vt PERIOD(DATE)) PARTITION BY (CASE_N(BEGIN(vt) < DATE, NO CASE));
その後、hash_idx_ppiに次のようなハッシュ インデックスを作成しようとしたとします。
CREATE HASH INDEX hx(i) ON hash_idx_ppi ORDER BY VALUES(i);
PERIOD列に対してインデックスを作成できないことを示すエラーがリクエスト元に返されます。
- ハッシュ インデックスを持つ行パーティションPIテーブルにクエリーを実行して3710エラーが発生した場合は、MaxParseTreeSegs DBS制御フラグを更新して行パーティションPIテーブルへのどのようなリクエストも処理できる値にすると、最適化ルーチンが使用できるメモリ量を増やすことができます。
行パーティションPIテーブルで問題が発生する 推奨される処理 ハッシュ インデックスまたは結合インデックスなし MaxParseTreeSegsの値を次の値に変更します。 - 2000(バイト パック形式システム)
- 4000(バイト整合形式システム)
ハッシュ インデックスまたは結合インデックスあり Teradataサポートに連絡してください。 場合によっては、これらの値をさらに増分する必要があるなど、クエリーのワークロードがあるかもしれません。
MaxParseTreeSegs DBS制御フィールドの設定変更については、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。