문제

덮개 지수에서 불필요한 열을 식별하기위한 어떤 방법이 있습니까? 검색되지 않은 열은 색인의 적용 가능성에 영향을 미치지 않고 포함하거나 완전히 제거 될 수 있습니까?

도움이 되었습니까?

해결책

사물을 명확히하기 위해
아이디어 덮개 색인 여기에는 검색 할 수없는 열 (WHERE 절에 사용)이 포함되어 있지만 선택할 수 있습니다 (선택 열 목록의 일부).

커버링 지수에 사용되지 않은 콜럼의 존재를 주장하는 쉬운 방법은 없을 것 같습니다.. 아래의 힘든 과정 만 생각할 수 있습니다.

  • 대표 기간 동안 서버에서 실행되는 모든 쿼리를 기록하십시오 (또는 원하는 테이블에서).
  • 필터링 (정규 표현식을 통해) 쿼리는 기본 테이블과 관련이 없습니다.
  • 나머지 쿼리의 경우 쿼리 계획을 얻으십시오. 문제의 색인이 포함되지 않은 쿼리를 폐기하십시오
  • 나머지 쿼리 또는 쿼리의 각 "템플릿"에 대해 (많은 쿼리는 동일하지만 검색 기준 값에 대해) Select 또는 When .))
  • 해당 목록에서 찾을 수없는 색인의 열은 긍정적으로 좋습니다.

이제 위의 프로세스가 커버링 인덱스가 사용되는 컨텍스트를 확인하지 않기 때문에 몇 가지 더 [열을 제거 해야하는 열]이 몇 개 더있을 수 있습니다. 또한 (예 : 커버링 인덱스가 아닌 열에 도달하려면 ...)

위의 임상 적 접근법은 다소 매력적이지 않습니다. 분석적 접근이 바람직 할 수 있습니다:

서버를 사용하여 모든 응용 프로그램에서 사용할 수있는 모든 쿼리 "템플릿"을 찾으십시오. 이러한 각 패턴에 대해 커버링 인덱스를 사용할 수있는 패턴을 찾으십시오. 이것들은 (다시 몇 개의 구멍 ...) 쿼리입니다.

  • 기본 테이블에 대한 참조를 포함하십시오
  • 색인의 열이 아닌 기본 테이블의 열을 어떤 식 으로든 인용하지 마십시오.
  • 색인의 열이 더 선택적인 기본 테이블에서 검색 기준을 사용하지 마십시오 (매우 순서대로 ...)

또는 ... 응용 프로그램에 가지 않고도 : 모든 사용 사례를 생각하십시오, 및 이러한 사례에 서비스를 제공하는 쿼리가 인덱스의 모든 열에서 얻을 수있는 이점이 있습니다. 그렇게하면 처음 몇 열에 대해 인덱스의 선택성에 대해 비교적 좋은 아이디어를 가지고 있음을 의미합니다.

다른 팁

사용 사례 및 데이터 포인트에 대한 감사를 수행하는 경우 감사에 사용되거나 사용되지 않은 것은 삭제 후보입니다. 데이터베이스에 이러한 철저한 감사가없는 경우 추적을 실행하고 저장하여 데이터베이스에 도달하는 시간 창의 가치의 쿼리를 저장할 수 있습니다. 트레이스를 분석하고 데이터베이스에 어떤 유형의 쿼리가 닿을 지, 그리고 거기에서 어떤 열을 삭제할 수 있는지 확인할 수 있습니다.

추적 분석은 일반적으로 후보자를 찾는 데 사용됩니다 잃어버린 지수이지만 사용 추세를 분석하는 데 사용될 수 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top