풀 조인 은 적 게 쓰 는 게 좋 을 것 같 아 요.
select g2.col1, g1.col2
from (select nvl(tt.col1,pp.col1) col1, nvl(tt.col2,0) + nvl(pp.col2,0) col2
from (select u.col1, count(*) as col2
from a g
inner join b u on g.username = u.username
where ...
group by u.col1) tt
full join
(select col1, count(*) as col2
from c t1, d t2
where ...
group by t2.col1) pp
on tt.col1 = pp.col1) g1,
b g2
where ...;
분해 집행 을 거 쳐 문제 가 없고 전체 집행 만 느 린 것 으로 나 타 났 다.실행 계획 을 살 펴 보 니 full join 에 문제 가 있 었 습 니 다. tt 의 결과 가 많 고 pp 의 결과 가 상당히 적 었 습 니 다.DBA 는 unoin all 로 바 꾸 자고 제안 하여 다음 과 같이 바 꾸 었 습 니 다.
select g2.col1, g1.col2
from (select col1, sum(col2)
from (select u.col1, count(*) as col2
from a g
inner join b u on g.username = u.username
where ...
group by u.col1
union all
select col1, count(*) as col2
from c t1, d t2
where ...
group by t2.col1)
group by username) g1,
b g2
where ...;
임 무 를 다시 수행 합 니 다. OK!
20110825
최근 에 Oacle 의 BUG 를 만 났 습 니 다. 저장 과정 에서 cube 함 수 를 실행 하여 600 오류 가 발생 했 습 니 다.
-- FOR < ORA - 00600: 내부 오류 코드, 매개 변수: [qcte 1], [0], [], [], [], [], [], [], [] > execute immediate 'alter session set' optimizer cost based transformation '= off';
이 동시에 오늘 DBA 가 저 에 게 문 제 를 해결 해 주 었 습 니 다. full join 이 일 으 킨 것 입 니 다. 이 SQL 의 실행 계획 cost 치가 매우 무 섭 고 두 시간 동안 진행 하 는 진 도 는 0% 에 불과 합 니 다.
DBA 는 비장의 카드 를 꺼 냈 다.
alter session set "_complex_view_merging" = false;
문제 해결!(물론 실제로 다른 방법 으로 돌아 갈 수 있다. 그것 은 full join 을 사용 하지 않 아 도 문 제 를 해결 할 수 있다)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.