単一テーブル結合インデックスに関する統計データが収集されていない場合、最適化ルーチンは、単一テーブル結合インデックスの統計データの代わりに実テーブルの統計データを使います。単一テーブル結合インデックス列の構成方法の関係で、一般に、インデックス列についての統計データを直接収集することはない、むしろ実テーブルのうち対応する列に関して収集するのが最善です。これにより、同じデータを何度も収集する必要がなくなり、システムのパフォーマンスとディスク領域が共に最適化されます。
この推奨事項は、スパース結合インデックスには該当しません。結合インデックスがスパースの場合、基本となる基本テーブルではなく結合インデックスそのものの統計を収集する必要があります。
また、単一テーブル結合インデックスが選択リストの複雑な式を使って定義されていて、式のマップ済み基本テーブル列に対するクエリーで使用される述部でこの式が頻繁に指定される場合も、この推奨事項は該当しません。結合インデックスでの統計収集とTeradata Vantage™- SQLリクエストおよびトランザクション処理、B035-1142を参照してください。
実テーブルの列についてではなく単一テーブル結合インデックスの列について統計データを収集することが必要になる理由としては、次の3つがあります。
- 単一テーブル結合インデックスはスパースです(スパース結合インデックスを参照)。
- 何らかの事情で実テーブルの列に関する統計データを収集しないことにした場合には、対応する単一テーブル結合インデックス列に対して直接収集することが必要になります。
- プライマリ インデックス列セットが複数の列で構成されていて、実テーブルに対してそれらの列を含むプライマリ インデックス もセカンダリ インデックスもない場合には、以下の2つの選択肢があります。
- より優れた選択肢は、基本テーブルの複数の列統計を収集することです(複数列に関する統計収集を参照)。
- あまりよくない選択肢は、単一結合インデックスの列セットについての統計を収集することです。その場合は、COLLECT STATISTICS ON … INDEX構文を使用して単一テーブル結合インデックスにあるその列セットの統計を収集するSYSUDTLIB。