範囲クエリーをカバーする際の、行パーティション結合インデックスと値順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

行パーティション結合インデックスと値順NUSIは、範囲クエリーのパフォーマンスを最適化することを目的としています。これらの指針は、値順NUSIと単一レベルのパーティション結合インデックスとの間の選択のみに適用されます。値順NUSIは、マルチレベル パーティション結合インデックスの代わりとはなりません。

パーティション式と値順NUSIの両方を結合インデックスに対する同じ列セットに定義することも、行圧縮結合インデックスにパーティションを定義することもできないため、どちらが特定のクエリー ワークロードのパフォーマンスをより向上させることができるかを判断しなければなりません。

特定のワークロードに結合インデックスを設計して、行パーティション結合インデックスを使用するか、行へのアクセス パスを作成するための値順NUSIを追加して非パーティション結合インデックスを使用するかの判断には、以下のガイドラインについて考慮する必要があります。

  • 一般に、パーティション結合インデックスが目的に合う場合は、値順NUSIと非パーティション結合インデックスではなく、パーティション結合インデックスを使用することをお勧めします。
  • 結合インデックスに対して行圧縮が定義されている場合には、その結合インデックスのパーティションを定義することはできません。

    このシナリオの場合、値順NUSIのみが範囲クエリーの最適化を可能にする結合インデックスの設計の選択肢になります。

  • 結合インデックスの基礎となる基本テーブルが更新されるたびに、結合インデックスも更新しなければなりません。

    結合インデックスに値順NUSIが定義さる場合、それも基本テーブルおよび結合インデックスの行が更新されるたびに更新しなければなりません。

    この追加の保守は、行パーティションPIで結合インデックスを定義する場合は不要となります。また、行パーティション排除により、行パーティション結合インデックスの更新は、非パーティション結合インデックスでの同等の更新操作よりもさらに高速になります。このような場合、更新には、DELETE、MERGE、およびUPDATE SQLリクエストによって実行される削除操作と更新操作が含まれますが、挿入操作は含まれません。

  • PPIは結合インデックス行への直接アクセスを提供しますが、値順NUSIは提供しません。

    NUSIを使って行にアクセスすることは常に間接的な操作であり、結合インデックスを使用して行セットにアクセスする前にNUSIサブテーブルにアクセスします。ただし、NUSIがクエリーをカバーする場合、結合インデックス サブテーブルの行にアクセスする必要はありません。

    また、行パーティションPIは、結合インデックスのプライマリ インデックスに対してより優れた結合および集約戦略を実現する手段にもなります。

  • プライマリ インデックスがクエリー条件として指定されている場合、NUSIに必要とされるすべてのAMPへのアクセス手法ではなく、行パーティションPIでは行パーティション排除を使用することで向上される直接的な結合インデックスの行へのアクセスという利点が加わります。

    ただし、行アクセスの相対的な時間は、特定の値順NUSIの選択性、結合インデックス行のサイズ、および値順NUSIが特定のクエリーをカバーするかしないかによって異なります。

  • 結合インデックス列に65,535を超える固有値が保持されており、インデックスの設計対象のクエリー ワークロードが特定の値を調べるものである場合、値順NUSIは、その列に対してパーティション化された結合インデックスよりも選択的になる可能性が高くなります。