기본적으로 두 테이블의 행을 조인해야하는 쿼리를 작성해야한다. 내 초기 쿼리는 다음과 같습니다조인 조건에서 디코드를 사용할 때 쿼리 속도가 느리다.
select *
from Table1 T1
left join Table2 T2 on T1.f1 = T2.f1
and (decode(T2.f2,
'1',
'value1',
'2',
'value2',
'3',
'value3') = T1.f2 or T2.f2 = '4')
내가 뭘 트링하고 직접적 조인 조건으로 사용할 수있는 두 개의 필드 (T1.f1
, T2.f1
)하지만, 일부를 필요로 다른 두 개의 필드가 Table1
과 Table2
입니다 이 두 열의 값에 동일한 값 집합이 없기 때문에 조인 조건에서 사용되기 전에 변환을 수행해야합니다.
이제이 쿼리는 실제로 느리게 실행됩니다. 전체를 제거하려고했습니다.
and (decode(T2.f2,
'1',
'value1',
'2',
'value2',
'3',
'value3') = T1.f2 or T2.f2 = '4')
조건이며 정상적으로 실행됩니다.
left join Table2 T2 on T1.f1 = T2.f1
and (decode(T2.f2,
'1',
'value1',
'2',
'value2',
'3',
'value3') = T1.f2)
을하고 또한 확인을 실행 : 그럼이 T2.f2 = '4'
부분을 제거하는 노력, 즉, 조건은 다음과 같습니다. 그렇다면 쿼리를 수정하여 (물론 원본과 동일한 결과를 얻음) 쿼리를 빠르게 실행해야합니까? 실행을 무엇을 잡고 있습니까?
두 버전의 쿼리에 대한 Explain 플랜을 게시 할 수 있습니까? – MT0