DEV/database
ORACLE 페이징 처리
석봉
2023. 11. 14. 16:55
조회 데이터가 너무 많은 경우 데이터를 모두 불러오면 출력에 문제가 있을 수 있다.
(느리다던가... 부하가 너무 많이 걸린다던가...)
그런 경우 페이징을 사용하여 처리하는 것이 좋다.
-- 데이터를 한번 감싸고 일부를 가져온다고 생각하자.
-- ROW_NUMBER() : 순번 매기기
-- [기준점 컬럼] : 페이징을 하기 때문에 기준점이 명확해야함. 중복값이 있으면 항상 일정한 값이 나올 수 있도록 잘 정렬해줄 것.
-- [페이지 건수] : 한 페이지 몇 건을 표출할 것인지 설정
-- [조회할 페이지] : 조회할 페이지 번호
SELECT
A.*
FROM
(
SELECT
COUNT(*) OVER() AS TOTAL_CNT -- 총 카운트
, FLOOR( ( ROW_NUMBER() OVER(ORDER BY [기준점 컬럼]) - 1 ) / [페이지 건수] + 1 ) AS RNUM
, SAMPLE_NM
, SMAPLE_CD
, SMAPLE_DT
FROM
[SAMPLE_TABLE]
WHERE
[조건절]
ORDER BY [기준점 컬럼]
) A
WHERE
RNUM = [조회할 페이지]