모든 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개 이상의 행이 있을 경우에만 가치가 있습니다.
외부 키에 인덱스를 만드는 것은 다음과 같은 이유로 유용한 경우가 많습니다.
- PRIMARY KEY 제약 조건에 대한 변경 사항은 관련 테이블에서 Foreign KEY 제약 조건을 사용하여 확인합니다.
- 외부 키 열은 한 테이블의 외부 키 제약 조건에 있는 열 또는 열을 다른 테이블의 기본 또는 고유 키 열과 일치시켜 쿼리에서 결합 기준으로 자주 사용됩니다.
언급URL : https://stackoverflow.com/questions/3650690/should-every-sql-server-foreign-key-have-a-matching-index
'programing' 카테고리의 다른 글
| 다음 대신 사용할 항목::ng-deep (0) | 2023.05.04 |
|---|---|
| 반복 행 루프에서 판다 데이터 프레임의 값 업데이트 (0) | 2023.05.04 |
| VBA 단일 시트를 CSV로 저장(전체 워크북이 아님) (0) | 2023.05.04 |
| SELECT 문에서 "이전 행" 값에 액세스할 수 있는 방법이 있습니까? (0) | 2023.05.04 |
| 하위 모듈을 최신 커밋으로 업데이트 (0) | 2023.05.04 |