たとえば、データベース内で一意にしたい2つのフィールドを含むテーブルがあります。例えば:
create table Subscriber (
ID int not null,
DataSetId int not null,
Email nvarchar(100) not null,
...
)
ID列が主キーであり、DataSetIdとEmailの両方にインデックスが付けられます。
私ができるようにしたいのは、同じEメールとDataSetIdの組み合わせがテーブルに表示されないようにすることです。言い換えると、Eメールの値は特定のDataSetIdに対して一意である必要があります。
列に一意のインデックスを作成してみました
CREATE UNIQUE NONCLUSTERED INDEX IX_Subscriber_Email
ON Subscriber (DataSetId, Email)
しかし、これは検索時間に非常に大きな影響を与えることがわかりました(たとえば、電子メールアドレスを検索する場合、テーブルには150万行あります)。
このタイプの制約を達成するためのより効率的な方法はありますか?