ORACLE NL조인 튜닝 관련 질문 0 2 768

by 티라미수꿀맛 [Oracle Tuning] [2020.08.07 00:12:57]


안녕하세요 

오늘도 oracle 튜닝을 공부하다 모르는게 생겨 질문을 드립니다.

친절한 sql튜닝이란 책을 보면서 공부중인 학생인데요.

select *
from pra_hst_stc a , odm_trms b
where a.sale_org_id =:  sale_org_id
and    a.strd_grp_id =  b.strg_grp_id
and    a.strd_id       =  b.strd_id
order by a.stc_dt desc

pra_hst_stc_n1 : sale_org_id + strd_grp_id + strd_id +stc_dt

여기서 문제점을 찾으라 나와있거든요

이게 테이블 로우수를 확인해 분포도 같은거나 실행계획도 없고 딱 이것만 봐서는 

정말 뭐가 문제인지 잘 모르겠습니다. 공부가 부족한탓이겠지요..

일단 order by 절 컬럼은 인덱스에서 빼더라도 나머지는 점조건으로 다 들어가는거니 괜찮다고 보는데 

정확한 답을 모르니 계속 잘못생각할수도 있어서 이렇게 질문을 올립니다.

제일 효율적인 답안 주시면 감사하겠습니다. 

감사합니다.

by 마농 [2020.08.07 08:40:16]

인덱스 부분은. 정렬없이도 인덱스만으로 정렬 효과를 얻을 수 있는가? 라고 보면
위 쿼리는 그렇게 하지 못합니다.
그렇게 하려면 stc_dt 항목이 인덱스 두번째 항목이어야 합니다.

추가로 코딩 스타일 지적합니다.
1. =:  sale_org_id 이부분은 띄어쓰기 신경써야 하구요. = :sale_org_id
2. 변수명은 컬럼명과 다르게 구별해 주는게 좋습니다. :v_sale_org_id
3. SELECT * 부분은 * 대신 꼭 필요한 항목만 쓰셔야 합니다.


by 티라미수꿀맛 [2020.08.08 14:46:52]

언제나 친절하게 답변해주셔서 감사합니다~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입