페이징 처리(고급 SQL 활용) - SQL전문가 가이드 p.683~p.684
개발 및 관리/Oracle 9i, 10g, 11g, 12c, 19c 2012. 10. 26. 11:50
페이징 처리: 조회할 데이터가 일정량 이상이고 수행빈도가 높다면 반드시 페이징 처리를 해야 한다.
1) 1차 단계
-- <첫 화면이거나, '다음(-->)' 버튼을 클릭했을 때>
SELECT 거래일시, 체결건수, 체결수량, 거래대금
FROM (
SELECT TOP 11 거래일시, 체결건수, 체결수량, 거래대금
FROM 시간별종목거래 A
WHERE :페이지이동 = 'NEXT'
AND 종목코드 = :isu_cd
AND 거래일시 >= :trd_time
ORDER BY 거래일시
)
;
-- <'이전(<--)' 버튼을 클릭했을 때>
SELECT 거래일시, 체결건수, 체결수량, 거래대금
FROM (
SELECT TOP 11 거래일시, 체결건수, 체결수량, 거래대금
FROM 시간별종목거래 A
WHERE :페이지이동 = 'PREV'
AND 종목코드 = :isu_cd
AND 거래일시 <= :trd_time
ORDER BY 거래일시 DESC
)
ORDER BY 거래일시
;
2) 2차 단계 - Union All을 활용하면 사용자가 어떤 버튼(조회, 다음, 이전)을 눌렀는지에 따라 하나의 SQL로 처리가 가능하다.
SELECT 거래일시, 체결건수, 체결수량, 거래대금
FROM (
SELECT 거래일시, 체결건수, 체결수량, 거래대금
FROM 시간별종목거래 A
WHERE :페이지이동 = 'NEXT' -- 첫 페이지 출력 시에도 'NEXT' 입력
AND 종목코드 = :isu_cd
AND 거래일시 >= :trd_time
ORDER BY 거래일시
)
WHERE ROWNUM <= 11
UNION ALL
SELECT 거래일시, 체결건수, 체결수량, 거래대금
FROM (
SELECT 거래일시, 체결건수, 체결수량, 거래대금
FROM 시간별종목거래 A
WHERE :페이지이동 = 'PREV'
AND 종목코드 = :isu_cd
AND 거래일시 <= :trd_time
ORDER BY 거래일시 DESC
)
WHERE ROWNUM <= 11
ORDER BY 거래일시
;
'개발 및 관리 > Oracle 9i, 10g, 11g, 12c, 19c' 카테고리의 다른 글
소트 튜닝 - SQL전문가 가이드 p.689~p.693 (0) | 2012.10.26 |
---|---|
Analytic Fuction(윈도우 함수) 활용(고급 SQL 활용) - SQL전문가 가이드 p.685~p.686 (0) | 2012.10.26 |
Union All을 활용한 M:M 관계의 조인(고급 SQL 활용) - SQL전문가 가이드 p.677~p.680 (0) | 2012.10.26 |
CASE문 활용(고급 SQL 활용) - SQL전문가 가이드 p.674~p.675 (0) | 2012.10.26 |
Between 조인 - SQL전문가 가이드 p.664 (0) | 2012.10.25 |