ROWNUM에 대해 알아보자!!
1. ROWNUM 정의
ROWNUM이란
오라클에서 ROWNUM은 쿼리집합이 메모리에 생성된 뒤 결과 집합 내의 레코드에 붙여지는 가상의 순번을 의미한다. ROWNUM에는 숫자 1,2,3,4,...N의 값이 할당되며 여기서 N의 값은 ROWNUM과 사용하는 로우의 수를 의미한다.
ROWNUM은 주로 2가지 목적으로 많이 사용된다.
Top-N 프로세싱 : TOP에서 N건 처리
페이지네이션(Pagination) : LIMIT 구분과 유사하며, 페이징을 처리할 때 사용
2. ROWNUM 동작원리
ROWNUM 값은 쿼리의 조건 절이 처리되고 난 후 , 그리고 sort가 수행되지 전에 할당된다. 또한 ROWNUM은 할당된 이후에 증가만 된다.
예시
SELECT ROWNUM FROM tb_user_m WHERE user_seq = ‘1’ GROUP BY user_name ORDER BY ROWNUM DESC |
처리순서
1) FROM/WHERE 절 처리
2) ROWNUM이 할당되고 FROM/WHERE절에 전달되는 출력 레코드에 대하여 ROWNUM이 증가
3) SELECT 적용
4) GROUP BY 적용
5) ORDER BY 적용
* 추가적으로 알게 된 정보 : order by 를 통하여 정렬시에 index를 타는 컬럼을 설정했었을 시에는 where 절 후 바로 rownum이 할당 되는 것이 아니라 order by 이후 할당된다고 한다.. 신기방기
3. ROWNUM 사용방법
3-1) Top-N 프로세싱
ROWNUM을 통하여 TOP에서 N건 까지 처리하는 방식으로 아래와 같이 사용한다.
SELECT * FROM USERTEST WHERE ROWNUM <= 10 |
3-2) 페이지네이션
MYSQL에서 LIMIT로 페이징 처리할 사용되며 아래와 같이 사용한다.
SELECT * FROM (SELECT ROWNUM AS ROWSEQ, user_seq, user_name, user_position FROM (SELECT USER_SEQ, USER_NAME, USER_POSITION FROM USERTEST ORDER BY user_name desc ) ORDER BY ROWSEQ asc ) WHERE ROWSEQ BETWEEN 0 AND 10 |
'컴퓨터 공부 > Database' 카테고리의 다른 글
[Oracle] Explain plan 사용하기 (1) | 2013.06.04 |
---|---|
[Oracle] Oracle 내장함수 종류 (0) | 2013.06.03 |
[Oracle] P-File(Parameter File)과 SP-File(Server Parameter File) 속성 (0) | 2013.05.23 |
[Database] Oracle 11g 설치방법 (0) | 2013.04.25 |
[Database] Mysql의 타입 종류 (3) | 2013.04.04 |