오라클에서 사용하는 페이지 쿼리가
1. rownum 사용하기 - 가짜필드, 데이터를 select 할때마다 번호를 하나씩 붙인다.
2. row_number 윈도우 분석함수
-- 1page
select *from tb_board where rownum<10 and rownum<20;
아래는 데이터가 많을수록(대용량 데이터) 속도가 빠른 서브쿼리
-- 서브쿼리
select A.rnum, A.seq, A.title, A.contents, A.writer,
to_char(A.wdate, 'yyyy-mm-dd') wdate, A.hit
from(
select rownum rnum, A.seq, A.title, A.contents, A.writer, A.wdate, A.hit
from(
select A.seq, A.title, A.contents, A.writer, A.wdate, A.hit
from tb_board A
order by seq desc
)A where rownum<=30
)A
where rnum>20;
대용량 아닐때
select
A.seq
,A.title
, A.writer
, to_char(A.wdate, 'yyyy-mm-dd') wdate
, A.contents
, A.hit
, A.rnum
from
(
select A.seq, A.title, A.writer, A.wdate, A.contents,A.hit,
row_number() over( order by seq desc) as rnum,
ceil(row_number() over( order by seq desc)/10) as pg
from tb_board A
)A where pg=#{pg}
요즘은 오라클도 offset 사용가능
SELECT *
FROM table_name
ORDER BY column_name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
[출처] oracle offset limit ( 오라클 페이징 처리 )|작성자 노루궁뎅이