[SQL] 모든 SQL 서버 외래 키가 일치하는 인덱스가해야 하는가?
SQL모든 SQL 서버 외래 키가 일치하는 인덱스가해야 하는가?
그것은 SQL Server 데이터베이스의 모든 외부 키에 대한 인덱스를 생성하는 것이 좋습니다인가?
해결법
-
==============================
1.네, 그것은 좋은 연습은 여기를 참조입니다 : 외래 키 컬럼에 인덱스를 넣어 SQL 서버 정지를했을 때? 외래 키 열을 색인에 대한 혜택은 아래로 스크롤이 있습니까? 부분
네, 그것은 좋은 연습은 여기를 참조입니다 : 외래 키 컬럼에 인덱스를 넣어 SQL 서버 정지를했을 때? 외래 키 열을 색인에 대한 혜택은 아래로 스크롤이 있습니까? 부분
-
==============================
2.모든 외래 키? 선택성은 (많은 값이 중복 즉) 낮은 인 경우 제 인덱스 테이블 스캔보다 더 비용이 많이들 수있다. 또한, 활성이 높은 환경에서 (쿼리보다 훨씬 더 많은 삽입 / 업데이트 / 삭제 작업) 인덱스를 유지하는 비용은 시스템의 전체 성능에 영향을 줄 수 있습니다.
모든 외래 키? 선택성은 (많은 값이 중복 즉) 낮은 인 경우 제 인덱스 테이블 스캔보다 더 비용이 많이들 수있다. 또한, 활성이 높은 환경에서 (쿼리보다 훨씬 더 많은 삽입 / 업데이트 / 삭제 작업) 인덱스를 유지하는 비용은 시스템의 전체 성능에 영향을 줄 수 있습니다.
-
==============================
3.외래 키 열을 인덱싱하는 이유는 다른 열을 인덱싱하는 이유와 동일합니다 : 당신이 열을 기준으로 필터 행려고하는 경우에 인덱스를 만들 수 있습니다.
외래 키 열을 인덱싱하는 이유는 다른 열을 인덱싱하는 이유와 동일합니다 : 당신이 열을 기준으로 필터 행려고하는 경우에 인덱스를 만들 수 있습니다.
당신이 테이블 [사용자 (아이디 INT, 이름 varchar (50)) 및 테이블 [UserAction] (사용자 ID의 INT, 액션 VARCHAR (50))이있는 경우 예를 들어, 어떤 작업을 특정 사용자를 찾을 수 있도록 대부분의 아마 원할 것입니다 했다. 예를 들어, 다음 쿼리를 실행하려고 :
select ActionName from [UserAction] where UserID = @UserID
당신이 열을 기준으로 필터 행을하지 않으려면 다음에 인덱스를 넣을 필요가 없습니다. 그리고 당신이 20 개 이상있는 경우에만 당신은 그것의 가치가 그것을 할 경우에도 - 30 행.
-
==============================
4.MSDN에서 : FOREIGN KEY 제약 조건
MSDN에서 : FOREIGN KEY 제약 조건
외래 키에 인덱스를 생성하는 것은 다음과 같은 이유로 종종 유용하다 :
from https://stackoverflow.com/questions/3650690/should-every-sql-server-foreign-key-have-a-matching-index by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 오라클 데이터베이스에 "&"같은 특수 문자를 입력하려면? [복제] (0) | 2020.06.24 |
---|---|
[SQL] GROUP BY는 MAX 날짜를 가진 (0) | 2020.06.24 |
[SQL] 어떻게 SQL 쿼리에서 처음이자 마지막 기록을 얻으려면? (0) | 2020.06.24 |
[SQL] 데이터베이스에이 개 분야에 대한 별개의 SQL (0) | 2020.06.24 |
[SQL] 하는 jobject에 빈 또는 null JToken에 대한 확인 (0) | 2020.06.24 |