복붙노트

[SQL] 모든 SQL 서버 외래 키가 일치하는 인덱스가해야 하는가?

SQL

모든 SQL 서버 외래 키가 일치하는 인덱스가해야 하는가?

그것은 SQL Server 데이터베이스의 모든 외부 키에 대한 인덱스를 생성하는 것이 좋습니다인가?

해결법

  1. ==============================

    1.네, 그것은 좋은 연습은 여기를 참조입니다 : 외래 키 컬럼에 인덱스를 넣어 SQL 서버 정지를했을 때? 외래 키 열을 색인에 대한 혜택은 아래로 스크롤이 있습니까? 부분

    네, 그것은 좋은 연습은 여기를 참조입니다 : 외래 키 컬럼에 인덱스를 넣어 SQL 서버 정지를했을 때? 외래 키 열을 색인에 대한 혜택은 아래로 스크롤이 있습니까? 부분

  2. ==============================

    2.모든 외래 키? 선택성은 (많은 값이 중복 즉) 낮은 인 경우 제 인덱스 테이블 스캔보다 더 비용이 많이들 수있다. 또한, 활성이 높은 환경에서 (쿼리보다 훨씬 더 많은 삽입 / 업데이트 / 삭제 작업) 인덱스를 유지하는 비용은 시스템의 전체 성능에 영향을 줄 수 있습니다.

    모든 외래 키? 선택성은 (많은 값이 중복 즉) 낮은 인 경우 제 인덱스 테이블 스캔보다 더 비용이 많이들 수있다. 또한, 활성이 높은 환경에서 (쿼리보다 훨씬 더 많은 삽입 / 업데이트 / 삭제 작업) 인덱스를 유지하는 비용은 시스템의 전체 성능에 영향을 줄 수 있습니다.

  3. ==============================

    3.외래 키 열을 인덱싱하는 이유는 다른 열을 인덱싱하는 이유와 동일합니다 : 당신이 열을 기준으로 필터 행려고하는 경우에 인덱스를 만들 수 있습니다.

    외래 키 열을 인덱싱하는 이유는 다른 열을 인덱싱하는 이유와 동일합니다 : 당신이 열을 기준으로 필터 행려고하는 경우에 인덱스를 만들 수 있습니다.

    당신이 테이블 [사용자 (아이디 INT, 이름 varchar (50)) 및 테이블 [UserAction] (사용자 ID의 INT, 액션 VARCHAR (50))이있는 경우 예를 들어, 어떤 작업을 특정 사용자를 찾을 수 있도록 대부분의 아마 원할 것입니다 했다. 예를 들어, 다음 쿼리를 실행하려고 :

    select ActionName from [UserAction] where UserID = @UserID
    

    당신이 열을 기준으로 필터 행을하지 않으려면 다음에 인덱스를 넣을 필요가 없습니다. 그리고 당신이 20 개 이상있는 경우에만 당신은 그것의 가치가 그것을 할 경우에도 - 30 행.

  4. ==============================

    4.MSDN에서 : FOREIGN KEY 제약 조건

    MSDN에서 : FOREIGN KEY 제약 조건

    외래 키에 인덱스를 생성하는 것은 다음과 같은 이유로 종종 유용하다 :

  5. from https://stackoverflow.com/questions/3650690/should-every-sql-server-foreign-key-have-a-matching-index by cc-by-sa and MIT license