PLSQL 로 여러 테이블에서 데이타 검색을 해서 결과값을 가져와야 되는 경우가 생겼습니다.
테이블간 우선순위가 있습니다. A > B > C
A,B,C 테이블에 A01, B01, C01 컬럼이 인덱스를 가지고 있다고 할 때
두가지 방법으로 처리가능할 것 같은데....
1) SQL 한방으로 처리 : 아래와 같이 조회하게 되면 조건절이 안으로 병합하여 들어가 인덱스를 타게 됨
SELECT name
INTO v_result
FROM (
SELECT A01 AS NAME
FROM A
UNION ALL
SELECT B01
FROM B
UNION ALL
SELECT C01
FROM C
)
WHERE NAME = 'XXX'
AND ROWNUM = 1
2) 절차적으로 처리 : 앞에 조회에 결과값이 나오면 다음에 SQL 을 날리지 않아도 됨
SELECT A01 AS NAME
INTO v_result
FROM A
WHERE A01= 'XXX'
IF v_result IS NOT NULL THEN
RETURN v_result
END IF;
SELECT B01 AS NAME
INTO v_result
FROM B
WHERE B01= 'XXX';
IF v_result IS NOT NULL THEN
RETURN v_result
END IF;
...
어떤 쪽이 속도면에서 유리할까요?