SQL*Plus, 논리합 연산자의 액세스 효율화 – 논리합 연산자의 이해: OR 연산자의 해소

SQL*Plus, 논리합 연산자의 액세스 효율화 – 논리합 연산자의 이해: OR 연산자의 해소

SELECT
	...
FROM TAB1 x, TAB2 y, TAB3 z
WHERE JOIN_CONDITIONS ...
AND 
(
	(
		:선택 = '1' 
		AND 구분 = '10' 
		AND 인수일자 BETWEEN SYSDATE-30 AND SYSDATE
		AND 종목코드 = :종목
	)
	OR
	(
		:선택 = '2'
		AND 구분 BETWEEN '20' AND '30 
		AND 인수일자 BETWEEN SYSDATE-60 AND SYSDATE 
		AND 종목코드 = :종목
	)
);
SELECT
	...
FROM TAB1 x, TAB2 y, TAB3 z
WHERE JOIN_CONDITIONS ...
AND 구분 IN (DECODE(:선택, '1', '10', '20')
			, DECODE(:선택, '2', '30'))
AND 인수일자 BETWEEN SYSDATE-30*:선택 AND SYSDATE /* 1이면 30, 2이면 60 */
AND 종목코드 = :종목;

원문 출처
Encore – 대용량 데이터베이스

Leave a Reply