1. 일반적인 오라클 페이징 처리
SELECT *
FROM (
SELECT A.*
, ROWNUM AS RNUM
, FLOOR((ROWNUM-1)/{디스플레이수}+1) AS PAGE
, COUNT(*) OVER() AS TOTCNT
FROM (
{검색쿼리 - 정렬이 필요할 경우 정렬조건 포함}
) A
)
WHERE PAGE = {페이지번호};
OR
SELECT *
FROM (
SELECT A.*
, ROWNUM AS RNUM
, COUNT(*) OVER() AS TOTCNT
FROM (
{검색쿼리 - 정렬이 필요할 경우 정렬조건 포함}
) A
)
WHERE RNUM > {범위부터}
AND RNUM <= {범위까지};
2. 오라클 대용량 페이징 처리
SELECT * FROM (
SELECT ROWNUM AS RNUM, A.* FROM (
{검색쿼리 - 정렬이 필요할 경우 정렬조건 포함}
) A WHERE ROWNUM <= {범위까지}
) WHERE RNUM > {범위부터};
OR
SELECT * FROM (
SELECT /*+ INDEX_ASC or INDEX_DESC(A {정렬조건 인덱스명}) */
ROWNUM AS RNUM, A.* FROM (
{검색쿼리 - 정렬이 필요한 경우 정렬조건을 포함하지 않고 ORACLE 힌트사용}
) A WHERE ROWNUM <= {범위까지}
) WHERE RNUM > {범위부터};
3. 인덱스를 이용한 페이징 처리
SELECT
IDX, TITLE, CONTENT
FROM ( SELECT /*+ INDEX(A IN_BOARDS)*/ ROWNUM AS RUNM, IDX,TITLE,CONTENT FROM BOADR A)
WHERE RNUM >=1 AND RNUM <=10
-> 위 정보에서 RNUM 값만 바꾸면 해당 페이징 쿼리 완성 :
-> RNUM 예시 : (((PAGENO - 1) * PAGESIZE) + 1)
4. ROW_NUMBER()를 이용한 페이징 처리
SELECT * FROM (
SELECT
A_TITLE
,ROW_NUMBER() OVER (ORDER BY A_IDX ASC) ROWNUMBER
FROM BOARD)
WHERE ROWNUMBER BETWEEN 100 AND 120
[출처] [ORACLE] 페이징 처리 sql|작성자 kyaayaa
http://blog.naver.com/PostView.nhn?blogId=kyaayaa&logNo=100127065619 --> 퍼온곳. 감사합니다.
http://blog.naver.com/PostView.nhn?blogId=kyaayaa&logNo=100127065619 --> 퍼온곳. 감사합니다.
'Java' 카테고리의 다른 글
java.lang.ClassCastException: java.math.BigDecimal (0) | 2012.01.19 |
---|---|
Getting Started With Spring Security 3.1 VIDEO (0) | 2012.01.07 |
JSTL 정리 (2) | 2012.01.03 |
JSTL 사용하기 위한 MAVEN REPO (0) | 2012.01.02 |
jd-gui (0) | 2011.12.13 |