예를 들어 데이터베이스 내에서 고유하게 만들려는 두 개의 필드가 포함 된 테이블이 있습니다. 예 :SQL Server에서 다중 열 고유 제한을 만드는 방법
create table Subscriber (
ID int not null,
DataSetId int not null,
Email nvarchar(100) not null,
...
)
ID 열은 DataSetId와 Email의 색인이 생성됩니다.
내가 할 수있게하려는 것은 동일한 이메일 및 DataSetId 조합이 테이블에 나타나지 않도록하거나 다른 방법으로 말하면 주어진 DataSetId에 대해 Email 값이 고유해야합니다. 150 만 개 행이 -
나는 열
CREATE UNIQUE NONCLUSTERED INDEX IX_Subscriber_Email
ON Subscriber (DataSetId, Email)
에 고유 인덱스를 만들려고하지만, 예를 들어 이메일 주소를 검색 할 때 나는 (이 검색 시간에 매우 큰 영향을주었습니다 표).
이러한 유형의 제약 조건을 효과적으로 달성하는 방법이 있습니까?
인덱스가없는 검색이 인덱스가있는 것보다 훨씬 빠르다는 말입니까? 이것은 내가 알기 론, 검색 속도를 높이기 위해 색인이 항상 만들어졌으며 속도가 느려지지는 않는다는 것을 알게 된 소식입니다. –
아니요, 그게 다에요. ** 검색 시간에 ** 어떤 ** 중요한 영향을 미쳐서는 안됩니다! 얼마만큼의 영향력을 말하고 있습니까? 실행 계획을 보여줄 수 있습니까? 통계를 업데이트 했습니까? –
Email 및 DataSetId의 '간단한'색인이 포함 된 전자 메일 주소 검색은 약 1 초가 걸렸습니다. 추가 복합 지수를 추가하면 약 9 초가 소요됩니다. – Neilski