색인이 너무 많은 경우 / 알 수있는 방법


26

때때로 Microsoft SQL Server Profiler를 실행하면 생성 할 새로운 인덱스와 통계가 많이 나옵니다 ( "... 97 % 추정 개선 ...").

내 이해로 추가 된 모든 인덱스는 SQL SELECT쿼리를 더 빠르게 만들 수 있지만 인덱스를 조정해야하기 때문에 UPDATE또는 INSERT쿼리 속도가 느려질 수 있습니다.

내가 "너무 많은"인덱스 / 통계를 언제 얻습니까?

아마도 이것에 대한 명확한 대답이 아니라 약간의 규칙이있을 수도 있습니다.



@Nick 감사합니다. 질문을 게시하기 전에 Google과 dba.se.com을 신중하게 검색했습니다. 내 생각에 이것은 다소 관련이 없습니다. 인덱스가 필요한지 여부를 알고 싶지 않고 너무 많은 인덱스가 만들어 UPDATE지고 INSERT명령문이 너무 느린 시점을 결정하는 방법을 알고 싶습니다 .
Uwe Keim

3
거기서 답을 읽었습니까? 예를 들어 허용되는 답변은 제거해야하는 사용하지 않는 인덱스를 식별하는 데 도움이되는 일부 분석 스크립트에 대한 링크입니다. "너무 많은"인덱스가있을 때의 질문에 대답하는 데 도움이 될 수 있습니다.
Nick Chammas

답변:


24

이 질문에 답하는 데 가장 중요한 요인은 부하 프로필입니다.

  • 부하가 읽기 집약적 인 경우 인덱스가 가장 많거나 가장 빈번한 쿼리를 만족 시키길 원합니다.

  • 부하가 많은 쓰기 작업이 필요한 경우 색인을 신중하게 작성하십시오. 예를 들어 하나 또는 두 개의 가장 비싼 SELECT와 같이 UPDATE 요구를 충족시키기위한 인덱스.

  • 로드가 OLAP 인 경우 어쨌든 목표 테이블을 스캔하기 때문에 인덱싱하지 않습니다.

색인이 너무 많다는 것을 어떻게 알 수 있습니까?

  • 당신은 그들 일부는 어떤 쿼리에 의해 사용되지 않는 것을 볼 수있을 때

  • 빈번한 DELETE, UPDATE 또는 INSERT는 값 비싼 인덱스 변경 (예 : 비 클러스터형 인덱스 insert , update 또는 delete ) 과 관련된 쿼리 계획을 보여줍니다 . 이러한 DML 문의 페널티가 갱신되어야하는 인덱스에서 얻을 수있는 가치가 있는지 판단하려면 판단을 사용하십시오.


8

유지 관리되고 있지만 사용되지 않는 (또는 거의 사용되지 않는) 인덱스가있는 경우 많은 인덱스가 있어야합니다. 모든 인덱스를 사용하여 사용자 성능을 향상시키는 경우 많은 인덱스를 사용할 필요가 없습니다.


나는 "두 발행 수 변경하는 것이 좋습니다 수 에를 로" " 너무 내가하지 편집 그들이 내 편집 6 자 최소 변경해야 할 수 있기 때문에,"?
Uwe Keim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.