2010-02-22 2 views
5

외래 키를 통해 다른 테이블 톤에 의해 참조되는 테이블 Document이 있습니다. 문서 레코드를 삭제하려고하고 있으며 실행 계획에 따라 SQL Server는 참조하는 모든 테이블에서 클러스터 된 인덱스 검색을 수행하고 있습니다. 이것은 매우 고통 스럽다.다수의 외래 키에 의해 참조되는 테이블에 대한 삭제 최적화

나는 FK가 자동으로 FK 필드에 색인을 만들 것이라고 생각 했습니까? 아니면 내가 틀렸어? 사실 모든 단일 FK 필드에 명시적인 인덱스를 넣는 데이터베이스를 돌아 다닐 필요가 있습니까?

답변

4

아니요, SQL Server는 외래 키를 만들 때 인덱스를 자동으로 만들지 않습니다. 색인을 직접 만들어야합니다.

관련 게시물 : 그것은 일반적으로 자동 인덱싱 "기본 키"와 연관되어 있기 때문에 Does a foreign key automatically create an index?

+0

감사합니다. 그 질문에 답합니다! 내 것은 아마도 복제 된 것입니다 ... –

1

이름은 "외래 키는"조금 잘못된 것입니다. 따라서 사람들은 외래 키가 색인되어 있다고 추정 할 수도 있습니다.

여기서 "키"는 제약 조건을 의미합니다. 따라서 외래 키를 추가하면 실제로 제약 조건이 추가됩니다. 색인은 완전히 다른 거래입니다.

+1

사실, 아직도 다릅니다. "키"는 식별자로 사용할 수 있음을 의미합니다. 인덱스는 키를 구현하기 위해 편리하게 사용할 수있는 액세스 구조입니다. '외래 키'라는 용어는 "키이지만이 테이블의 키가 아니라 다른 키의 키입니다."라는 의미입니다. 그리고 일반적으로 사람들이 '외래 키'라고 말할 때 외래 키의 참조 무결성을 강제하는 제약 조건 인 '외래 키 제약 조건'을 실제로 의미합니다. –

관련 문제