2014. 4. 23. 15:56 카테고리 없음
대용량 데이터 목록 처리
나중에 수정하자
전체 갯수와 목록 처리를 한번에
* pageNo : 현재 표시된 페이지 번호, 기본값 1
* pageRows : 한 페이지에 보여지는 로우 개수
SELECT P.*
FROM (
SELECT T.* ,
CEIL(ROWNUM / #{pageRows}) AS PAGE_NO ,
COUNT(*) OVER() AS TOTAL_ROWS ,
#{pageRows} AS PAGE_SIZE
FROM (
SELECT a, b, c
FROM xxxx_table
WHERE a = 'Y'
AND b = 'N'
ORDER BY PRIORITY ASC, c DESC
) T
) P
WHERE PAGE_NO = #{pageNo}
쿼리를 2번 호출하는 방식
int startRownum = PageUtil.getStartRownum(pageNo, countPerPage);
int endRownum = PageUtil.getEndRownum(pageNo, countPerPage);
전체 카운트를 먼저 구한후 startRownum, endRownum을 프로그램에서 구한후
쿼리를 처리
SELECT *
FROM (
SELECT C.*, ROWNUM AS rn
FROM (
SELECT a, b, c
FROM t_httk_cafe_lecture A
WHERE A.a = xxxx AND
A.b = '0'
ORDER BY c DESC, a DESC
) C
WHERE ROWNUM <= #endRownum#
)
WHERE rn BETWEEN #startRownum# AND #endRownum#