반응형

 

페이징 처리: 조회할 데이터가 일정량 이상이고 수행빈도가 높다면 반드시 페이징 처리를 해야 한다.

 

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 거래일시

;

 

 

반응형