본문 바로가기
SQL

Oracle SQL의 LIMIT, OFFSET 대체 방법인 ROWNUM을 활용한 페이징 기법

by Status Code 2023. 4. 19.

페이징 기법은 대용량 데이터를 다루는 웹 서비스에서 매우 중요한 기능 중 하나입니다. 많은 양의 데이터를 한 번에 보여주는 것은 사용자 경험을 저하시키는 요소 중 하나이기 때문에, 페이징 기법을 통해 데이터를 나누어 표시하도록 구현하는 것이 일반적입니다.

Oracle에서는 ROWNUM을 이용하여 페이징을 구현할 수 있습니다. ROWNUM은 Oracle에서 반환되기 전에 미리 부여되기 때문에, 일부 경우에는 예상과 다른 결과를 반환할 수 있으므로, 이러한 경우에는 다른 방법을 고려해야 합니다.

아래는 Oracle에서 ROWNUM을 이용하여 페이징을 구현하는 예제 코드입니다.

 

SELECT *
FROM (
  SELECT /*+ FIRST_ROWS(n) */ 
    a.*, ROWNUM rnum
  FROM (
    SELECT *
    FROM board
    ORDER BY write_date DESC
  ) a
  WHERE ROWNUM <= :last_rownum
)
WHERE rnum >= :first_rownum;

 

위 코드에서, :first_rownum과 :last_rownum은 가져올 게시물의 시작과 끝을 나타냅니다. 중첩 쿼리를 사용하여 먼저 board 테이블을 작성일자 역순으로 정렬한 뒤, ROWNUM을 부여합니다. 그 다음, WHERE 조건을 이용하여 :first_rownum과 :last_rownum에 해당하는 게시물만을 선택하여 반환합니다.

이러한 방식으로 페이징 기법을 구현하면, 보다 효율적으로 대용량 데이터를 다룰 수 있습니다.

댓글