열 C1, C2 ... C10이있는 테이블 T가 있다고 가정 해 보겠습니다.동일한 열 조합에 대한 DB2 다중 색인
C1, C2 및 C3은 여러 쿼리에서 가장 자주 언급되는 열입니다. 이 열을 참조하는 순서는 제어 할 수 없습니다.
쿼리 성능을 향상 시키려면 (C1, C2, C3), (C1, C3, C2), (C2, C1, C3), (C2, C3, C1) 등의 여러 인덱스를 만들어야합니다. ? 두 개의 유사한 쿼리 예제
... T1로부터선택 * , T2 여기서 t1.c1 = t2.c1 및 t1.c2 = T2.C2 및 T3 = t1.c3. C3 및 T1에서
선택 * , t1.c2 = T2.C2 및 t1.c1 = t2.c1 및 t1.c3 = t3.c3
내가 두 개의 인덱스가 필요하십니까 T2 (C1, C2, C3)와 (C2, C1, C3)는 위의 두 개의 서로 다른 쿼리 또는 하나의 조합의 성능을 향상시키기 위해 두 쿼리에 모두 충분합니까?
필자는 이것이 필요하지 않으며 DB2가 C1, C2 및 C3 모두 사용되는 한 인덱스 조합 중 하나와 일치하도록 쿼리의 열을 다시 정렬 할만큼 똑똑하다고 가정합니다.
누구든지 그와 관련된 몇 가지 기사를 확인하고 지적 해 줄 수 있습니까? 사용
DB2 버전
내 질문에 대해 다시 말해 보겠습니다. 모든 열 C1, C2 및 C3이 여러 쿼리 (서로 다른 순서로 사용됨)에서 사용된다고 가정하면이 세 열에 대해 여러 순열 색인이 필요합니다. 예로 – Murthy
... T1, T2 = t1.c1 t2.c1 및 t1.c2 = T2.C2 및 t1.c3 = t3.c3 및 선택 * 에서 선택 * T1에서 T2 여기서 t1.c2 = T2.C2 및 t1.c1 = t2.c1 및 t1.c3 = t3.c3 제가 개의 인덱스 (C1, C2, C3) 및 (C2, C1 필요하십니까 , C3) 위의 두 가지 다른 쿼리 성능을 향상시키기 위해 또는 bo 질문? – Murthy
DB2가 수행 할 작업은 수집 된 통계에 따라 다릅니다. 처리되는 순서는 통계로만 결정될 수있는 결과 세트의 카디널리티에 따라 다릅니다. 나는 (DB2/z를위한 어쨌든, AIX 버전에 대해 모르는) 기본값은 사용할 수있는 통계가없는 경우 주어진 순서대로 처리한다는 것을 확신합니다. 그러나 행동이 거의 확실하게 바뀔 것이기 때문에 대상 환경에서 통계를 수집하고 설명하는 것이 중요합니다. – paxdiablo