programing

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

javajsp 2023. 5. 4. 18:40

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

SQL Server 데이터베이스에 모든 외부 키에 대한 인덱스가 있는 경우의 이점은 무엇입니까?

예, 좋은 방법입니다. 여기를 참조하십시오.SQL Server가 외부 키 열에 인덱스를 넣는 것을 중지한 날짜는 언제입니까?외부 키 열을 인덱싱하면 어떤 이점이 있습니까?로 스크롤합니다.부분

모든 외국 열쇠?아니요. 선택성이 낮은 경우(즉, 많은 값이 중복되는 경우), 인덱스는 테이블 스캔보다 비용이 더 많이 들 수 있습니다.또한 작업량이 많은 환경(쿼리보다 삽입/업데이트/삭제 작업이 훨씬 많은 경우)에서는 인덱스 유지 관리 비용이 시스템의 전체 성능에 영향을 미칠 수 있습니다.

외부 키 열을 인덱싱하는 이유는 다른 열을 인덱싱하는 이유와 동일합니다. 열을 기준으로 행을 필터링할 경우 인덱스를 생성합니다.

예를 들어 [User](IDint, Name varchar(50)) 및 [UserAction](UserIDint, Action varchar(50)) 테이블이 있는 경우 특정 사용자가 수행한 작업을 찾을 수 있습니다.예를 들어 다음 쿼리를 실행합니다.

select ActionName from [UserAction] where UserID = @UserID

열을 기준으로 행을 필터링하지 않을 경우 인덱스를 지정할 필요가 없습니다.해도 20~30개 이상의 행이 있을 경우에만 가치가 있습니다.

MSDN에서: 외부제약 조건

외부 키에 인덱스를 만드는 것은 다음과 같은 이유로 유용한 경우가 많습니다.

  • PRIMARY KEY 제약 조건에 대한 변경 사항은 관련 테이블에서 Foreign KEY 제약 조건을 사용하여 확인합니다.
  • 외부 키 열은 한 테이블의 외부 키 제약 조건에 있는 열 또는 열을 다른 테이블의 기본 또는 고유 키 열과 일치시켜 쿼리에서 결합 기준으로 자주 사용됩니다.

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