17.10 - ハッシュ インデックス列についての統計データ収集の指針 - Advanced SQL Engine - Teradata Database

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

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

統計データを収集する対象となるハッシュ インデックス列を選択する際の指針は、実テーブルや結合インデックスの場合とよく似ています。どんな場合でもまず考慮するべき主要な要素は、統計データがよりよいアクセス計画を提供することになるかどうかということです。よりよいアクセス計画を提供しない場合、削除することを考慮すべきです。

収集する統計から、より優れたアクセス計画を得られない場合は、そのインシデントをTeradataサポートに報告してください。

ハッシュ インデックスの統計を収集することを検討している場合は、インデックスのことを、派生結果を保存する特殊な基本テーブルとして見なすことができます。たとえば、ハッシュ インデックスを使用するアクセス計画では、直接プローブ、フル テーブル スキャン、または範囲スキャンによってアクセスする必要があります。

統計収集に含める列を決定するときには、以下のことを考慮してください。
  • ハッシュ インデックス上の統計の収集に関連した実行計画については、次の表を参照してください。
    実行計画の一部 統計データの収集対象
    検索条件キー 検索条件を構成する列セット。
    ハッシュ インデックスを別のテーブルと結合すること 結合のカーディナリティを最も正確に見積もるうえで必要な情報を最適化ルーチンに提供するための結合列。
  • ハッシュ インデックス上の統計の収集に関連したインデックス定義については、次の表を参照してください。
    ハッシュ インデックスの定義方法 統計データの収集対象
    BY句またはORDER BY句(あるいはその両方)を指定した場合 それらの句で指定されるプライマリ インデックスおよび順序付き列。
    BY句を指定しない場合 インデックスを定義する実テーブルのプライマリ インデックス列セット。
    ORDER BY句を指定せず、実テーブルの順序付け列セットがcolumn_name_1リストに含まれない場合 インデックスを定義する実テーブルの順序列。

    これによって、ハッシュ インデックス内のカーディナリティを含む、いくつかの基本的なベースライン統計が最適化ルーチンに提供されます。

  • ハッシュ インデックス列がWHERE句に頻繁に出現する場合には、それに関する統計データの収集を考慮します(特に、その列が値順ハッシュ インデックスのソート キーである場合)。
  • 基本テーブルの列参照を使用して記述されたクエリー述部として頻繁に指定される複雑な式(述部の右側の単純な列参照以外のものを指定する述部式として定義される複雑な式)にハッシュ結合インデックスが定義されている場合、それらの列について統計データを収集すると、基本テーブルの列を指定したクエリーで単一テーブルのカーディナリティを最適化ルーチンが見積もる能力が向上します。クエリーで指定された基本テーブルの列の複雑な式の選択率を、それらの統計データを直接使用して見積もることができるからです。 <Teradata Vantage™- SQLリクエストおよびトランザクション処理、B035-1142>を参照してください。