-- 1.657초 SELECT tt.vendor_name FROM cboap_invoice_header_temp a ,cboap_vendor_v@l_fprod tt WHERE a.invoice_id = 3003363 AND xx1.dec_varchar2_sel(a.vat_reg_num, 10, 'SSN', 'test_data', 'val') = tt.vendor_reg_num
현재 위의 쿼리로 실행 했을 때 1.6초 ~ 1.8초정도 나옵니다.
cboap_invoice_header_temp 데이터 건수는 1,853,041건이고
cboap_vendor_v@l_fprod 데이터 건수는 293,676건 입니다.
따로 쿼리를 실행해본 결과는 아래와 같습니다.
-- 0.031초 SELECT xx1.dec_varchar2_sel(a.vat_reg_num, 10, 'SSN', 'test_data', 'val') FROM cboap_invoice_header_temp a WHERE a.invoice_id = 3003363
-- 0.047초 SELECT tt.vendor_name FROM cboap_vendor_v@l_fprod tt WHERE '215-86-65235' = tt.vendor_reg_num
인터넷에서 아무리 찾아봐도 튜닝에 대한 지식이 없어서 해결을 못하겠어요..
그나마 빠르게 돌아갔던 힌트는 /*+ parallel(tt) */로 0.8초정도로 나오구요
driving_site라는 힌트를 줘보라해서 driving_site /*+ driving_site(tt) */를 해봤는데 속도는 변함없었습니다.
어떤 힌트를 적용해야 속도가 잘나올까요??
읽어주셔서 감사합니다.
마농님 답변 감사합니다
1. cboap_invoice_header_temp 데이터 건수는 1,853,041건
cboap_vendor_v@l_fprod 데이터 건수는 293,676건
2. a에서 invoice_id는 유니크 값이기 때문에 1건나오구요, tt의 reg_num도 유니크라 조회조건에는 1건 나옵니다.
3. 실행계획은 3번째 쿼리tt만 확인이 안되고 나머지는 확인됩니다. 첫번째 쿼리에서는 tt부분은 REMOTEㄹ로 나와있어요.
3. driving_site(a)를 해도 속도는 같더라구요 ㅠㅠ
4. 암호화해서 비교하니 3초정도로 거의 두배로 느려져요 ㅠㅠㅠㅠㅠ
어떻게하면 좋을까여ㅠㅠㅠ 문제 원인조차 모르겠으니 답답해요
IN 절에 넣어 보는건 어떤가요?
SELECT tt.vendor_name FROM cboap_vendor_v@l_fprod tt WHERE tt.vendor_reg_num = (SELECT xx1.dec_varchar2_sel(a.vat_reg_num, 10, 'SSN', 'test_data', 'val') FROM cboap_invoice_header_temp a WHERE a.invoice_id = 3003363 -- AND ROWNUM <= 1 -- 로넘도 추가해 보세요. ) -- AND ROWNUM <= 1 -- 로넘도 추가해 보세요. ;