안녕하세요. 통계갱신 관련 문의드릴게 있어서 글 올립니다.
A테이블과 B테이블이 존재하며, 1:N관계의 테이블입니다.
A테이블 PK : Z1,Z2,Z3
B테이블 PK : X1(자동증가),Z1,Z2,Z3
B테이블 인덱스 : Z1,Z2,Z3
A테이블에 50만건 저장 후 B테이블에 100만건을 저장한 후, 두 테이블을 조인하여 조회할 때 조회가 되지않습니다.
(각각 조건 넣고 조회 시에는 조회가 잘됩니다.)
ON절 : Z1,Z2,Z3
WHERE절 : Z1,Z2
[EXPLAIN 실행계획]
Nested Loop (cost=1.13..16.52 rows=1 width=70)
Join Filter: (a.Z3 = b.Z3)
-> Index Scan using A테이블_PK on A테이블 a (cost=0.56..8.32 rows=1 width=62)
Index Cond: ((Z1 =44) AND (Z2 = 1))
-> Index Scan using B테이블_INDEX on B테이블 b (cost=0.56..8.19 rows=1 width=28)
Index Cond: ((Z1 = 44) AND (Z2 = 1))
그리고 통계갱신 후에는 다시 조회가 잘 됩니다.
현재는 저장 후 통계갱신(ANALYSE 테이블명)을 하도록 해놨는데 근본적인 문제해결은 아닌듯하여 질문남깁니다.
혹시 해당 원인을 알 수 있을까요?
* 추가적으로 테스트해보니, 통계갱신 시 ANALYSE A테이블(Z1)만 해도 이후에 조회가 잘됩니다.
|