반응형
모든 SQL Server 외래 키에 일치하는 인덱스가 있어야합니까?
SQL Server 데이터베이스의 모든 외래 키에 대한 인덱스를 만드는 것이 좋은 방법입니까?
예, 좋은 방법입니다. 여기를 참조하십시오. SQL Server가 외래 키 열에 인덱스를 넣는 것을 언제 중지 했습니까? 받는 사람 아래로 스크롤 외래 키 열을 색인에 어떤 이점이 있습니까? 부분
모든 외래 키? 아니요. 선택성이 낮은 경우 (즉, 많은 값이 중복 됨) 인덱스는 테이블 스캔보다 비용이 더 많이들 수 있습니다. 또한 활동이 많은 환경 (쿼리보다 삽입 / 업데이트 / 삭제 활동이 훨씬 많음)에서 인덱스 유지 비용이 시스템의 전체 성능에 영향을 미칠 수 있습니다.
외래 키 열을 인덱싱하는 이유는 다른 열을 인덱싱하는 이유와 같습니다. 열을 기준으로 행을 필터링하려면 인덱스를 만듭니다.
예를 들어, 테이블 [User] (ID int, Name varchar (50)) 및 테이블 [UserAction] (UserID int, Action varchar (50))이있는 경우 특정 사용자가 어떤 작업을 수행하는지 알 수 있기를 원할 것입니다. 했다. 예를 들어 다음 쿼리를 실행합니다.
select ActionName from [UserAction] where UserID = @UserID
열을 기준으로 행을 필터링하지 않으려면 인덱스를 넣을 필요가 없습니다. 그리고 그렇게하더라도 20-30 개 이상의 행이있는 경우에만 그만한 가치가 있습니다.
MSDN에서 : FOREIGN KEY 제약 조건
외래 키에 대한 인덱스를 만드는 것은 다음과 같은 이유로 유용합니다.
- PRIMARY KEY 제약 조건에 대한 변경 사항은 관련 테이블의 FOREIGN KEY 제약 조건으로 확인됩니다.
- 외래 키 열은 한 테이블의 FOREIGN KEY 제약 조건에있는 열을 다른 테이블의 기본 또는 고유 키 열과 일치시켜 관련 테이블의 데이터가 쿼리에 결합 될 때 조인 조건에서 자주 사용됩니다.
반응형
'IT TIP' 카테고리의 다른 글
Visual Studio : 프로세스가 생성 될 때 프로세스에 자동 연결 (0) | 2020.11.20 |
---|---|
숨겨진 파일을 제외한 파일 목록 가져 오기 (0) | 2020.11.20 |
작은 따옴표 만 이스케이프하려면 어떻게합니까? (0) | 2020.11.20 |
매개 변수가 bash 스크립트에 제공되었는지 확인하는 방법 (0) | 2020.11.20 |
Android : 상위 하단 + 하단 여백 정렬 (0) | 2020.11.20 |