2009-11-07 3 views
1

비 클러스터 인덱스에 너무 많은 포함 열을 추가 할 때주의해야합니까?많은 포함 열이있는 SQL Server 와이드 인덱스

완전히 덮여있는 검색어에 대한 북마크 조회를 방해하는 것으로 알고 있지만 열이 정적이 아니고 색인의 추가 전체 크기가 추가로 발생하는 경우 색인을 유지 관리하는 데 추가 비용이 발생한다고 생각합니다. 물리적 읽기.

답변

2

인덱스에 인덱스가 많거나 많은 열이있는 위험은 많은 CUD (생성/업데이트/삭제)를받는 데이터베이스에서 인덱스 유지 관리 비용이 중요해질 수 있다는 것입니다. 작업.

올바른 색인을 선택하는 것은 저장소 관련 문제 (일반적으로 우선 순위가 낮은 문제이지만 상황에 따라 중요 함)와 함께 가장 일반적인 사용 사례를 균형있게 조정하는 정렬 기술 및 CUD 연산의 성능 문제입니다.

+0

감사합니다. 환경 설정에는 OLTP db가 포함되어 있지만 OLTP의 select intos를 사용하여 테이블을 만드는 MI db도 있습니다. 그래서 균형 잡힌 행동입니다. MI db를 자체 환경으로 이동시키고 OLTP DB의 적절히 색인 된 복제 된 사본으로 공급할 것을 기대합니다. – SuperCoolMoss

1

나는 mjv에 동의합니다 - 이것에 대한 진정한 쉽고 빠른 대답은 없습니다. 그것은 균형 잡힌 행동입니다.

일반적으로 더 좁지 만 더 넓은 색인보다 많은 색인이 선호되며 책갈피 색인을 수행해야하는 것보다 포함 색인이 더 바람직합니다.)

당신은 정말 테스트 및 측정보다 훨씬 더 많은 일을 할 수 없습니다

: 당신의 폭 커버 인덱스의 관심 분야에서 성능이

  • 다음 추가

    • 측정
    • 측정 a를 게인을보고 특정 작업에서 속도를 높일 수 있는지, b) 나머지 성능이 너무 많이 떨어지지 않는지 확인하십시오.

    모든 추측과 시도는 실제로 도움이되지 않습니다. 다시 측정하고 결과를 비교하십시오. 그것은 정말로 당신이 할 수있는 전부입니다.

  • +0

    답변 해 주셔서 감사합니다. – SuperCoolMoss

    1

    난 그냥 2 가지 추가 할, 지금까지 모두 답변에 동의 : 인덱스를 덮는

    를, SQL Server 2005는 저장 및 사용을보다 효율적으로 만들어 INCLUDE clause을 소개했다. 이전 버전의 경우 포함 된 열은 900 바이트 너비의 일부인 트리의 일부 였고 인덱스를 더 크게 만들었습니다.

    또한 sp_spaceused를 사용할 때 인덱스가 테이블보다 커지는 것이 일반적입니다. 데이터베이스는 대부분 쓰기 때문에 (예 : INSERT가 중복을 찾거나, DELETE가 FK를 확인하거나, WHERE 등으로 업데이트) 대부분 쓰기 (어딘가에서 "85 % 읽음")를 보았습니다.

    +0

    답변 해 주셔서 감사합니다. – SuperCoolMoss

    관련 문제