[DB] 오라클 페이징 쿼리 구현하기

데이터베이스 테이블의 로우가 많을 때는 한꺼번에 가져오는 것 자체가 시스템 부하가 되기 때문에 페이지 단위로 끊어서 가져올 필요가 있다.


아래는 Oracle 11g 기준으로 간단한 페이징 쿼리를 구현해봤다.

"SELECT * FROM (SELECT ROWNUM AS ROW_NUMBER, COUNT(*) OVER() TOTAL_ROW_COUNT, A.* FROM ( " + 페이징할 쿼리문 + " ) A ) WHERE ROWNUM <= :PAGE_SIZE AND ROW_NUMBER > (:PAGE_NUMBER-1) * :PAGE_SIZE;"


<참고자료>

http://stackoverflow.com/a/11692804 -- Alessandro Rossi
http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html -- Tom Kyte

저작자 표시 비영리 동일 조건 변경 허락
신고