重複がテーブルに入力されないようにするために使用される複合主キー(4列で構成される)を持つテーブルがあります。このテーブルのキーを外部キーとして参照する必要がある新しいテーブルが必要になりました。
私の質問は、どのアプローチがルックアップ速度にとってより効率的かです:
1)4列すべてを含む新しいテーブルを作成し、それらをすべて外部キーで参照しますか。
または
2)主キーテーブルに新しいID列を作成し、これを新しいテーブルの外部キーとして使用しますか。
このデータベースは非常に大量のデータを保持することが期待されているため、各テーブルに保持されるデータ量を最小限に抑えることを目的として、これまで構築してきました。これを念頭に置いて、すべての行に2つのint列とdatetime列を保存するため、オプション2が最適なアプローチになりますが、不要な場合はルックアップ時間の増加を避けたいと思います。
INT IDENTITY
このような場合に代理キー(例えば)を使用します-そのテーブルの参照と結合を非常に簡単にします。重複を避けるには、これらの4つの列にUNIQUE制約を設定します。また:狭い主キーは、パフォーマンス上の理由ではるかに優れています(それらがクラスタリングキーとして使用される場合)