0

約30列のTeradataでテーブルを設計しています。これらの列には、Daily、Monthly、Weeklyなどのいくつかの時間間隔スタイルの値を格納する必要があります。実際の文字列値をテーブルに格納することは、データのひどい繰り返しになるため、不適切な設計です。代わりに、私がやりたいのは、プリミティブルックアップテーブルを作成することです。このテーブルは、Daily、Monthly、Weeklyを保持し、TeradataのID列を使用して主キーを取得します。この主キーは、外部キーとして作成しているテーブルに保存されます。

Webフォームのドロップダウンリストにデータを入力するときに知る必要があるのはプリミティブキーの値だけなので、これは私のアプリケーションでは問題なく機能します。ただし、使用する他のアプリケーションでは、レポートを実行するか、フィードを介してこのデータを受信する必要があります。したがって、このテーブルをプリミティブテーブルに結合するビューを作成して、実際に日次、月次、および週次を返すことができるようにする必要があります。

私の懸念はパフォーマンスです。これほど大量の外部キーフィールドを含むテーブルを作成したことはなく、Teradataはかなり新しいものです。これをすべて理解するという長い道のりを進む前に、目標を達成するための最善の方法についてアドバイスを求めたいと思います。

編集:このルックアップテーブルは無関係なプリミティブのミッシュマッシュになることを追加する必要があると思います。これには、前述のように時間間隔に関連する値のグループだけでなく、24x7や8x5などの時間枠も含まれます。テーブルは次のように設計されます。

IDタイプ値
--- ------------ ------------
毎日1インターバル
毎月2インターバル
毎週3インターバル
4 TimeFrame 24x7
5 TimeFrame 8x5

パート2の編集:この質問への露出を増やすために新しいタグを追加しました。

4

1 に答える 1

2

あなたがしたことはうまくいくはずです。もちろん、実際のクエリを実行し、必要に応じて統計を収集する必要があります。

私がお勧めできることの1つは、次のようにルックアップテーブルに追加の行を含めることです。

ID  Type         Value
--- ------------ ------------
0   Unknown      Unknown

次に、メインテーブルで、フィールドをnullにする代わりに、値0を指定します。これにより、外部結合の代わりに内部結合を使用できるようになり、パフォーマンスが向上します。

于 2012-04-26T23:27:08.013 に答える