2010-07-29 9 views
2

이것은 매우 간단한 질문이지만 확실한 답변을 찾을 수는 없습니다.입니까?

나는 PostgreSQL에 부모 테이블을 가지고 있고, 정의 된 몇 개의 자식 테이블을 가지고있다. 트리거가 설정되어 있고 필드가 x 인 필드가 특정 조건을 충족하는 경우 하위 테이블에만 데이터가 삽입됩니다. 내가 X에 따라 필드와 부모 테이블을 쿼리 할 때

는, PostgreSQL는 즉시 X의 특정 값과 관련이 자식 테이블로 이동합니다 알고있다.

모두 언급했듯이, 열에 특정 색인을 지정할 필요가 없습니다. x합니까? PostgreSQL은 이미 그것을 정렬하는 방법을 이미 알고 있으며 상위 x에 색인을 추가함으로써 PostgreSQL은 새로운 하위 테이블 각각에 대해 x에 고유 색인을 생성합니다.

색인 생성은 약간 중복됩니다. 맞습니까?

답변

3

x가 하나의 값 (또는 매우 작은 값)을 갖는 경우 x에 대한 하위 테이블에 색인을 만듭니다. 플래너가 어쨌든 전체 테이블을 스캔합니다.

x가 타임 스탬프이고 전체 파티션이 아닐 수도있는 시간대를 지정하거나 x가 다른 범위 또는 값 집합 인 경우 인덱스가 가장 가능성이 큽니다.

편집 : 하나의 값 또는 값 범위를 말하면, 자식 테이블 당 하나의 값을 말합니다.

+0

x는 미리 정의 된 목록 인 사이트 이름입니다. 예를 들어, 상위 테이블은 'city_description'일 수 있으며 'city'열이 있습니다. 내가 '시카고 _city_description', 'dallas_city_description', 'nyc_city_description'... 등의 10 개의 하위 테이블을 가지고 있다고 가정하면 트리거가 '도시'값에 따라 하위 테이블에 대한 결정을 내립니다. 이 열은 결코 타임 스탬프가 아닙니다. 그래서 색인을 제거하는 것은 괜찮습니까? –

+0

x가 사이트 이름이고 하위 테이블 당 하나의 사이트 이름이있는 경우 - 색인을 제거하십시오. – rfusca

+0

많은 의무가 있습니다. 정보 주셔서 감사합니다. –