2011-03-09 3 views
1

테이블에 (A,B, C,D) 인덱스가있는 경우 인덱스 (A,B, Y,Z) 또는 (B,A, C,D)도있을 이유가 있습니까?이런 식으로 DB 인덱스를 사용할 수 있습니까?

내가 묻는 이유는 두 가지 모두 인덱스의 일부를 융합 할 수있는 기회를 제공하기 때문입니다. 첫 번째 경우에는 접두어 A,B을, 두 번째 경우에는 접미어 C,D을 사용하면 더 낮은 위치에 복잡한 인덱스를 추가 할 수 있습니다. 비용. 즉, 나는이 일을 끝내지 못했고, 두 가지 색인을 모두 가지고있는 것이나 아니면 내가 방금 놓친 것을 놓쳤다면 거의 또는 전혀 도움이되지 않을지 궁금해하고 있습니다.

답변

1

인덱스가 모두 (A,B,C,D)(A,B,Y,Z) 인 것이 맞는 경우가 있습니다. A & B가 빈번하게 사용되는 것으로 간주되는 경우 C & D 또는 Y & Z의 조합이 더 선택적이지만 덜 빈번하게 사용되는 동안은 매우 선택 적이 지 않은 열이라고 가정하면. 또는 A & B가 자체적으로 선택적인 경우 C & D 또는 Y & Z를 선택하는 특정 검색어에 대해 커버 색인을 사용하는 것이 유용합니다. 또는 (A,B,C,D)(A,B,Y,Z)이 모두 고유해야하는 경우도 있습니다. 가능한 한 효율적으로 A & B를 지정하는 쿼리에 대해 인덱스 범위 스캔을 만들려고하기 때문에 (A,B)에 세 번째 인덱스를 갖는 것이 가치가있는 경우도 있습니다. 그러나 이들은 드문 경우입니다.

색인을 통합 할 수있는 기회에 대한 귀하의 요점을 잘 모르겠습니다. 필자는 여러 인덱스가 동일한 인덱스 구조를 사용하도록 허용하는 데이터베이스 엔진에 익숙하지 않습니다.

+0

다시 일치 : 그것은 내가 생각하고 있었던 것입니다. 두 개의 인덱스가 동일한 접두어를 가진다면 인덱스 트리의 첫 번째 N 레벨은 동일하거나 (b- 트리라고 가정하고) 이론적으로는 둘 모두에 의해 공유 될 수 있습니다. – BCS

관련 문제