Oracle2009. 7. 7. 10:44
SELECT  /* DSBIO4OS DSTAXCALZIROLIST51 */
/*+ push_suubq index(세금계산 세금계산_PK ) */
    세금계산.번호,
    세금계산,발행일자,
    세금계산,총액,
    세금계산,세액
    decode(세금계산.CHOICE1, '고객', TO_CHAR(세금계산.고객_번호),
                    세금계산.대리점_번호||TOCHAR(세금계산.기타업체_번호)) 고객번호,
    세금계산.고객상호
FROM 세금계산
WHERE 세금계산.번호
    in (select /*+ user_nl(지로지급, 세금계산_지로입금) */
                                    세금계산_지로집금.세금계산_번호
                from 지로지급,세금계산_지로집금
            where 세금계산_지로집금. 지로집금_번호 = 지르ㅗ집금.번호
              and 지로집금.일자 BETWEEN '&&1_FROM_DATE' AND '&&1_TO_DATE')
    AND EXISTS ( select 1 from 고객
                             where 세금계산.CHOICE1 = '고객'
                               and 고객.번호 = 세금계산.고객번호
                               and 고객.지로대상여부 = 'Y'
                               and 고객.청구사원_번호 = '&&1_SABUN' --19950113
                             union all
                                 select 1 FROM DUAL
                                 and 세금계산.CHOICE1 = '대리점');
집중사항
1. 데이타는 한번만 Select 해 온다. 죽어도 한번만 select 해 온다.
2. 범위를 일단 줄이는 쪽을 찾아라.
3. 조회할 테이블만 From절에 넣는다.
Posted by Julyus