by 쥬비스 [SQL Query] [2017.09.22 17:24:50]
::질문 해결완료 정말 감사합니다.
본문 쿼리는 노출되기 원하지않아 삭제하였습니다.
해당 쿼리인데
10g에서 돌리면 1초~3초정도의 시간이 소모 되지만,
11g에서 돌리면 5~10분 정도의 시간이 소모 됩니다,
힌트를 사용하면 시간이 줄어들지만 힌트를 사용하면 안좋다고 들어서, 여기서 저 해당 쿼리를 어떻게 튜닝을 해야할지 모르겟습니다.
10g 실행계획에서는 lips는 안 보이는데
동일한 쿼리 맞나요?
넵 동일한 쿼리 맞습니다.
그렇다면 테이블 간에 외래키 제약 같은 게 있다가 없어진 것 아닌가요?
--------------------------------------------------------------------------------
외래키가 있을 때 특수한 경우 테이블을 탐색하지 않는 경우가 있어 말씀 드린 건데..
아무래도 10g에서는 db_link쪽 테이블의 실행계획을 안 보여주는 게 아닐까 싶네요;;
실제로 그랬었는지 기억이 안 나네요ㅎㅎ
그건 잘 모르겠는데.. 없는거같아요
--삭제
rowid에서 열의정의땜에 aa.를 붙여주엇는데 오래 걸리네요 마찬가지로
실행 계획이 바뀌지 않았나요?
힌트 사용하면 빨라졌다는 건 어떤 힌트 쓰신 건지..
/*+ ORDERED*/
힌트는 이것을 사용하니
select 하는데 2초 정도 걸리네요 7분에서
아 제가 바보짓했네요. ROWID가 아니라 ROWNUM입니다;;
오.. 결과가 2초만에 출력 되었습니다.
다른 것들도 한 번 봐야겠네요 감사합니다
그런데 rownum을 하는이유가 컬럼 조인 순서를 제대로 맞춰줘서..음.?
아 그리고 질문에 남겨주신 본문 쿼리내용은 수정해서 없애주실수 잇을까요? 죄송합니다 번거롭게해드려서 ㅠ
아무래도 10G에서 인라인뷰 처리 후 마스터와 조인하는데 11G에서는 인라인뷰가 해체되면서 발생한 문제로 판단되어
ROWNUM을 붙여준 것이고요.(뷰 해체 방지) 다른 쿼리도 똑같이 빨라진다는 보장은 없어요.
오히려 11G에서 빨라진 쿼리도 있을 겁니다.
그리고 힌트를 무조건 사용하지 말라는 게 아니라..
제대로 알지 못하는 힌트를 남용하면 오히려 성능이 나빠질 수 있어서 그런 말이 있는 것이고..
실행계획이 의도대로 만들어지지 않는다면 적당하고 알맞은 힌트는 사용해야 한다고 생각합니다.
아하 공부할 것이 더 많아졌네요.. 이런것도 알게되고 감사합니다.
혹시 위에 질문에 남겨주신 쿼리는 삭제 혹은 수정이 가능할까요??
답변채택을 누르면 http오류 어쩌고떠서 집에가서 눌르겟습니다
감사합니다