値順NUSIで連続インデックスが重要な理由 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

ORDER BY句で作成された値順複数列NUSIは、割り当てられた32のインデックス番号のうち、2つの連続したインデックス番号を使用します。番号が連続しているインデックスのペアの一方は列リストを表わし、もう一方は順序付け列を表わします。

次のシナリオについて考えてみます。

  1. テーブルに32のインデックスを作成します。そのうちのどれも値順インデックスではありません。
  2. テーブルのインデックスを1つおきに削除します。つまり、奇数番号のインデックスすべてか、または偶数番号のインデックスすべてのいずれかが削除されます。

    たとえば、偶数番号のインデックスをすべて削除した場合、将来作成するインデックスに割り当てることのできる、16個の奇数番号のインデックス番号があることになります。

  3. ORDER BY句で複数列のNUSIを作成してみます。

    エラー メッセージが返されるのは、順序付き複数列NUSIへの割り当てに、2つの連続したインデックス番号を使用できないためです。

    値順単一列NUSI、非値順NUSI、USI、ハッシュ インデックス、または結合インデックスをさらに16個作成することは可能ですが、値順複数列NUSIを作成することはできません。

この問題に対処するには、以下の手順を実行します。

  1. テーブルのインデックスをすべて削除する。

    この処置により、2つの連続したインデックス番号が解放されます。

  2. 前に失敗した順番付け複数列NUSIを作成する。
  3. 連続したインデックス番号を解放するために削除したインデックスを、再作成する。