테이블이
고객번호 출고일자 통합번호
(reader_cd) (exp_dt) (totreader_cd)
00000001 2007-01-01 1
00000002 2007-02-01 1
00000003 2007-03-01 1
00000004 2007-04-01 1
00000005 2007-05-01 1
00000006 2007-01-01 2
00000007 2007-02-01 2
00000008 2007-03-01 2
00000009 2007-04-01 2
00000010 2007-05-01 2
고객번호를 입력하면 통합독자번호별로 묶어서
그중에 입력된독자번호보다 크고, 작은 출고일자를 구할려고 합니다.
예를들어 고객번호 00000003을 입력하면 통합번호1번을 묶어서
00000003번의 출고일자 2007-03-01보다 작은 2007-02-01과
큰 2007-04-01을 출력하고자 합니다.
답변을 부탁드립니다.
SELECT MIN(DECODE(GUBUN,1,dt,NULL)) min_dt, MAX(DECODE(GUBUN,2,dt,NULL)) max_dt
FROM (
SELECT 1 GUBUN, MAX(reader_cd) dt
FROM custor
WHERE totreader_cd = (SELECT totreader_cd FROM custor
WHERE reader_cd = '2345678')
AND exp_dt < (SELECT exp_dt FROM custor
WHERE reader_cd = '2345678')
UNION ALL
SELECT 2, MIN(reader_cd)
FROM custor
WHERE totreader_cd = (SELECT totreader_cd FROM custor
WHERE reader_cd = '2345678')
AND exp_dt > (SELECT exp_dt FROM custor
WHERE reader_cd = '2345678')
)
이 sql문으로 실행을 하면 2분가까이 걸립니다.
독자 조회시에 같이 조회가 되는데 이 구문에서 2분가까이 걸려 조회속도가 너무 느려 집니다.
어떻게 해야 조회속도를 빠르게 할수 있을까요....
답변을 부탁드립니다. |