- データ配分の均一化(最重要検討事項)
- データ アクセスの最適化
- インデックス化列の値の揮発性
- それぞれ異なる固有値で主に構成されている列を選択する。
これは最も重要な考慮事項です。固有値を持つ列は、構成内のすべてのAMPにデータ行を均等に分散します。これによって、すべてのプロセッサを要求に対するデータ行の処理に関与させることができ、並列処理が最大化されます。
高い頻度で繰り返し出現する少数の固有値を持つ列や、多数のnullを持つ列を使用しないようにします。これはデータ行の配分が不均等になる原因となり、その結果、他のAMPよりも多くの行を処理するAMPが発生し、パフォーマンスのボトルネックとなる可能性が増大します。
推奨事項: 構成内のAMP数を大幅に上回る数の固有値を持つ列を選択してください。
- 等価述部条件で最も多く使用されている列を選択する。
- 行アクセスで最も多く使用されている列を選択する。
PIはテーブル内のデータにアクセスするための最も効率的な方法を提供します。そのため、最も多く使用されているアクセス パスでPIを選択すると、最適なデータ アクセスを実現できます。例えば、あるテーブルが特定のテーブル セットと頻繁に結合される場合は、結合条件として通常使用される列セットにPIを定義することを検討します。
等号条件で行へのダイレクト アクセスができます。不等号条件では追加処理が必要となります。
- 次のデータ型のいずれも持たない列を選択する。 BLOB、CLOB、Period、UDT、ST_Geometry、MBR。
- PIがその汎用性を最適化するように、可能なかぎり少数の列を選択する。
- 問合わせ計画がAMPローカルの処理を使用し、行の再配置を回避するようにプライマリ インデックスを選択する。
- 揮発性のない列を選択する。
揮発列は行の再配置を頻発させます。Advanced SQL Engineがテーブルの行をPIの値に基づいてAMPに割り当てるからです。
いくつかのDBSControl値(AMPバッファ サイズも含む)は、実際の行の分散に影響を与えます。推奨事項: 絶対に更新されないPI列セット(優先)か、まれにしか更新されないPI列セットを選択してください。
テーブルの最適なプライマリ インデックスを選択するときに、競合が発生する場合があります。例えば、AMP間にデータを適正に配分するPIを選択する場合は、最も一般的なテーブルの利用パターンを反映するPIを選択することとの間でバランスをとらなければなりません。また、あるアプリケーションが1つの種類のプライマリ インデックスとの相性が良いのに対して、他のアプリケーションでは別のプライマリ インデックスを使用すると最適に動作するというようなことがあります。
推奨事項: データのアクセス パターンではなく、データの分散を均等にすることが、プライマリ インデックスを選択するときの主要な優先事項です。テーブルと問合わせは変化します。アクセス パターンも変化します。しかし、データの分散は変化しません。プライマリ インデックス以外のインデックス(例えば、セカンダリ インデックスや結合インデックス)をいつでも追加して、特定のアプリケーションをサポートすることができます。
関連情報
トピック | 詳細に関するリソース |
---|---|
インデックス付け:
|
|
プライマリ インデックスがないテーブル | Teradata Vantage™ - データベースの設計、B035-1094 |
参照整合性 | Teradata Vantage™ - SQLの基本、B035-1141 |