본문 바로가기

.주제별/SQL,DB

SQL) 오라클 페이징

오라클 페이징 처리에는 두가지 방법이 있다고 한다.

 

1. HINT(힌트) 이용

/*

* 추후 내용 보강하겠슴.

*/

 

2. row_number() 이용

예제1)

SQL 문

select * from

        (select tb.*, row_number() over(order by title asc) as num

                                                                          from TABLE01 tb )

where num between 10 and 20

설명

목적: TABLE01 인 tb에서 모든 field 값들을 얻어온다.

   01. tb에서 title 내림차순으로 field값을 얻어오고,

   02. 그 결과 중, 순서가 10~20 사이에 값들을 얻어온다.

예제2)

SQL 문

select * from

        (select seqno , title, name, memo, row_number() over(order by seqno desc, id)

                    as num

                   from tb where userid='samsik' )

where num between startROW and (endROW-1)

 

3. 참고

1) row_number() 는 SQL 표준이라고 한다.

  rownum 은 표준이 아니라고 나와있는데, 아래 참고하자.

  * 위키-Row_Number

  * Comparison of different SQL implementations

 

2) Larget Result Set 이 있을때, ROW_NUMBER()사용이 그리 빠르지 않다는 것

  * 여기 참조