IT TIP

모든 SQL Server 외래 키에 일치하는 인덱스가 있어야합니까?

itqueen 2020. 11. 20. 17:29
반응형

모든 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 제약 조건에있는 열을 다른 테이블의 기본 또는 고유 키 열과 일치시켜 관련 테이블의 데이터가 쿼리에 결합 될 때 조인 조건에서 자주 사용됩니다.

참고 URL : https://stackoverflow.com/questions/3650690/should-every-sql-server-foreign-key-have-a-matching-index

반응형