페이징 기법은 대용량 데이터를 다루는 웹 서비스에서 매우 중요한 기능 중 하나입니다. 많은 양의 데이터를 한 번에 보여주는 것은 사용자 경험을 저하시키는 요소 중 하나이기 때문에, 페이징 기법을 통해 데이터를 나누어 표시하도록 구현하는 것이 일반적입니다.
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에 해당하는 게시물만을 선택하여 반환합니다.
이러한 방식으로 페이징 기법을 구현하면, 보다 효율적으로 대용량 데이터를 다룰 수 있습니다.
'SQL' 카테고리의 다른 글
SQL NULL Values 이해하기 (0) | 2024.01.08 |
---|---|
오라클 SQL: 날짜 다루기 기초 (0) | 2024.01.05 |
SQL INSERT INTO : 기본부터 활용 (0) | 2024.01.04 |
SELECT DISTINCT로 데이터 중복 제거하기 (0) | 2024.01.02 |
(oracle)테이블에서 PK가 아닌 다른 컬럼을 INDEX로 추가하면 속도가 빨라질까? (+오버헤드란?) (0) | 2023.04.20 |
댓글