반응형
오라클의 경우 MYSQL과 같이 LIMIT 기능을 제공하지 않아 페이징 처리하는데 어려움이 따른다.
일반적으로 사람들이 가장 많이 사용하는 방법을 먼저 소개하도록 하겠다.
이 방법은 일방적인 데이터의 양에서는상당히 괜찮은 속도를 보장해준다.
그러나 대용량의 경우 부족한 성능을 보다.
1. 일반적인 오라클 페이징 처리
2. 오라클 대용량 페이징 처리
일반적으로 사람들이 가장 많이 사용하는 방법을 먼저 소개하도록 하겠다.
이 방법은 일방적인 데이터의 양에서는상당히 괜찮은 속도를 보장해준다.
그러나 대용량의 경우 부족한 성능을 보다.
1. 일반적인 오라클 페이징 처리
01.
SELECT
*
FROM
(
02.
SELECT
A.*,
03.
ROWNUM
AS
RNUM,
04.
FLOOR((ROWNUM-1)/{디스플레이수}+1)
AS
PAGE,
05.
COUNT
(*) OVER()
AS
TOTCNT
FROM
(
06.
{검색쿼리 - 정렬이 필요할 경우 정렬조건 포함}
07.
) A
08.
)
WHERE
PAGE = {페이지번호};
09.
10.
OR
11.
12.
SELECT
*
FROM
(
13.
SELECT
A.*,
14.
ROWNUM
AS
RNUM,
15.
COUNT
(*) OVER()
AS
TOTCNT
FROM
(
16.
{검색쿼리 - 정렬이 필요할 경우 정렬조건 포함}
17.
) A
18.
)
WHERE
RNUM > {범위부터}
AND
RNUM <= {범위까지};
2. 오라클 대용량 페이징 처리
01.
SELECT
*
FROM
(
02.
SELECT
ROWNUM
AS
RNUM, A.*
FROM
(
03.
{검색쿼리 - 정렬이 필요할 경우 정렬조건 포함}
04.
) A
WHERE
ROWNUM <= {범위까지}
05.
)
WHERE
RNUM > {범위부터};
06.
07.
OR
08.
09.
SELECT
*
FROM
(
10.
SELECT
/*+ INDEX_ASC
or
INDEX_DESC(A {정렬조건 인덱스명}) */
11.
ROWNUM
AS
RNUM, A.*
FROM
(
12.
{검색쿼리 - 정렬이 필요한 경우 정렬조건을 포함하지 않고 ORACLE 힌트사용}
13.
) A
WHERE
ROWNUM <= {범위까지}
14.
)
WHERE
RNUM > {범위부터};