오라클 페이징 서브쿼리

yesrin·2023년 10월 31일

데이터베이스

목록 보기
3/5

오라클에서 사용하는 페이지 쿼리가
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 ( 오라클 페이징 처리 )|작성자 노루궁뎅이

profile
안녕하세요! 틀린 정보는 댓글 달아 주세요.

0개의 댓글