본문 바로가기
Database/Oracle

효과적인 Top-N & Pagination Query

by kinorama 2011. 7. 19.

1. Top-N Query
     - Count Stopkey를 이용한 top-n 쿼리의 구현

SELECT *
  FROM (
         SELECT /*+ index(t employee_id) */ 
                t.* 
           FROM employee t
       )
 WHERE rownum <= 10
;

 

2. Pagination Query

   (1) index_desc 힌트 및 Count Stopkey를 이용한 페이징 처리

SELECT * 
  FROM ( 
         SELECT /*+ index_desc(t board_seq) */ 
                rownum AS rnum, 
                t.* 
           FROM board t 
          WHERE rownum <= :page_cmt * :current_page 
       ) 
 WHERE rnum > :page_cnt * (:current_page - 1)
 ;

 

  (2) 게시글의 갯수가 정해져 있는 경우의 페이징 처리 : first_rows(n) 힌트 이용

SELECT * 
  FROM ( 
         SELECT /*+ index_desc(t board_seq) first_rows(10) */ 
                rownum AS rnum, 
                t.* 
           FROM board t 
          WHERE rownum <= :page_cmt * :current_page 
       ) 
 WHERE rnum > :page_cnt * (:current_page - 1)
 ;

* :page_cnt  -> 게시글 갯수, :current_page -> 현재 조회할 페이지

'Database > Oracle' 카테고리의 다른 글

Oracle 올림(절상) 처리(RoundUp) 함수  (0) 2018.06.27

댓글