오라클 성능 고도화 원리와 해법 I (2009년)
Static SQL 구현을 위한 기법들 0 0 3,191

by 구루비 Static SQL [2009.12.10]


h1.11. STATIC SQL 구현을 위한 기법을
h2.1) IN-List 항목이 가변적이지만 최대 경우 수가 적은 경우


Select * from LP회원 WHERE 회원번호 in 회원번호 in ( :a, :b, :c)

Select * from LP회원
WHRE 회원번호 in ( decode (:a, 'all','01',:b)
                   ,decode(:a, 'all,'02',:c)
                   ,decode(:a, 'all','03',;d) )

h2.2) IN-List 항목이 가변적이고 최대 경우 수가 아주 많은 경우


Select * from 수시공시내역
Where 공시일자 = :일자
And    :inlist like '%'||분류코드||'%'

h3.1.IN-List 를 사용할 때


 Select * from 수시공시내역
 Where 공시일자 = :일자
 And 분류코드 in ( ....)

? 분류코드+공시일자 인덱스 구성 일 때 유리
h3.2. like 또는 instr 함수를 사용할 때


Select * from 수시공시내역
Where 공시일자 =:일자
And    INSTR(:inlist, 분류코드) > 0
? 공시일자+코드분류 인덱스 구성 일 때 유리

h2.3) 체크 조건 적용이 가변적인 경우


SELECT 회원번호, SUM(체결건수), SUM(체결수량), SUM(거래대금)
FROM 일별거래실적 e
Where 거래일자 = :trd_dd
AND   시장구분 = '유가'
AND EXISTS (
     SELECT 'X'
     FROM 종목
     WHERE 종목코드 = e.종목코드
     And 코스피종목편입여부 ='Y'
)
GROUP BY 회원번호
?
SELECT 회원번호, SUM(체결건수), SUM(체결수량), SUM(거래대금)
FROM 일별거래실적 e
Where 거래일자 = :trd_dd
AND   시장구분 = '유가'
AND EXISTS (
     SELECT 'X' FROM DUAL where :CHECK_YN ='N'
     UNION ALL
     SELECT 'X' FROM 종목 
     WHERE 종목코드 = e.종목코드
     And 코스피종목편입여부 ='Y'
     AND :check_yn ='Y'
)
GROUP BY 회원번호

h2.(4) select-list가 동적으로 바뀌는 경우
Decode 및 case 를 활용
h2.(5) 연산자가 바뀌는 경우
칼럼 데이터 사이즈에 따른 이하/미만/이상/초과의 계산

"코어 오라클 데이터베이스 스터디 모임" 에서 2009년에 "오라클 성능 고도화 원리와 해법 I " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3042

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

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