2011-12-23 8 views
1

私は約30列のテーブルを持っています。 10個の列は、値のリストからのみ取り込むことができます。SQL Serverテーブルの設計

今のところ、これらの値はテーブルにまっすぐにvarcharとして保存されています。

これらの値に対して別のテーブルを作成し、2つのテーブルをIDの外部キーでマップする必要がありますか?

単語ではなくIDがあるとパフォーマンスが向上しますか?それとも、クエリを実行するときに常に参加しなければならないため、パフォーマンスが低下しますか?それとも、パフォーマンスに違いはありませんか?

私はまた、データの完全性について懸念しています。

ありがとうございました。

+0

あなたが解決しようとしている問題は何かを:)でしょうか?あなたはあなたが持っているものを私たちに説明し、あなたはあなたが何をするかを私たちに説明しました。しかし、あなたは何が間違っているか教えてくれませんでした。パフォーマンスについては疑問に思っていますが、特定のパフォーマンス目標を設定し、システム全体を開発してテストし、システムがその目標を達成していないことがわかっている場合、私の経験ではパフォーマンスは問題に過ぎません。 –

答えて

3

外部キーは、パフォーマンスツールではなく、リレーショナル完全性ツールです。少なくともSQL Serverでは、FKを作成しても関連付けられたインデックスは作成されません。すべてのFKフィールドにインデックスを作成して、検索時間を改善する必要があります。

ので、FKSは、パフォーマンスを向上しませんが、インデックスを作ることは

+3

+1しかし、外部キーを使用するとデータの整合性が向上しますが、これはパフォーマンス上の小さなヒットよりもずっと重要です... –

+0

@aF:私はIDのやりとりを考えていました。データ。 – Jill

+0

@aF:一方、私はジョインのためにパフォーマンスが心配です。また、Fksがテキストデータを照合するときに検索のパフォーマンスを向上させることができるかどうかも疑問です。 – Jill