본문 바로가기

DataBase/Oracle

게시판 페이징하기

type 1 한페이지 10개씩 보여주고 100페이지라면
1000개의 row를 가져온 다음 뒤집어서 10개만 보여주기

SELECT
  *
FROM (
  SELECT
    /*+ index_desc(a 테이블인덱스) */ 
    a.*
    ,ROWNUM AS rnum
  FROM
    테이블 a
  WHERE ROWNUM <= 18000
)
WHERE
  rnum > 17990 



type 2 한페이지 10개씩 보여주고 100페이지라면
990개의 key 값중 최소값을 가져와서 그값보다 작은거 10개만 보여주기

SELECT
  /*+ index_desc(테이블 인덱스) */
  칼럼명
FROM 테이블
WHERE 테이블키값 <= (
    SELECT
      /*+ index_desc(테이블 인덱스) */
      min(테이블키값)
    FROM 테이블
    WHERE
      ROWNUM < 990
  )
  and rownum <= 10