다중 열 인덱스가있는 테이블이 있으며 쿼리에서 최대 성능을 얻기 위해 인덱스를 올바르게 정렬하는 것에 대해 의문이 있습니다.
시나리오 :
약 백만 개의 행이있는 PostgreSQL 8.4
c1 열의 값 은 약 100 개의 서로 다른 값을 가질 수 있습니다 . 값이 고르게 분포되어 있다고 가정 할 수 있으므로 가능한 모든 값에 대해 약 10000 개의 행이 있습니다.
c2 열 은 1000 개의 다른 값을 가질 수 있습니다 . 가능한 모든 값에 대해 1000 개의 행이 있습니다.
데이터를 검색 할 때 조건에는 항상이 두 열의 값이 포함되므로 테이블에는 c1과 c2를 결합하는 다중 열 인덱스가 있습니다. 필터링을 위해 단 하나의 열을 사용하는 쿼리가있는 경우 다중 열 인덱스에서 열 을 올바르게 정렬 하는 것이 중요하다는 것을 읽었습니다 . 이 시나리오에서는 그렇지 않습니다.
내 질문은 이것입니다.
필터 중 하나가 훨씬 더 작은 데이터 세트를 선택한다는 사실을 고려할 때 첫 번째 인덱스가 가장 선택적인 인덱스 (더 작은 세트를 허용하는 인덱스) 인 경우 성능을 향상시킬 수 있습니까? 참조 기사에서 그래픽을 볼 때 까지이 질문을 고려하지 않았습니다.
여러 열 인덱스 에 대한 참조 기사에서 가져온 이미지 .
쿼리는 필터링을 위해 두 열의 값을 사용합니다. 필터링을 위해 단 하나의 열을 사용하는 쿼리가 없습니다. 그들 모두는 : WHERE c1=@ParameterA AND c2=@ParameterB
. 다음과 같은 조건이 있습니다.WHERE c1 = "abc" AND c2 LIKE "ab%"