CREATE TABLE TEST
( NAME VARCHAR2(10));

SELECT * FROM TEST;

INSERT INTO TEST VALUES ('하');
INSERT INTO TEST VALUES ('마');
INSERT INTO TEST VALUES ('타');
INSERT INTO TEST VALUES ('아');
INSERT INTO TEST VALUES ('자');
INSERT INTO TEST VALUES ('가');
INSERT INTO TEST VALUES ('라');
INSERT INTO TEST VALUES ('바');
INSERT INTO TEST VALUES ('다');
INSERT INTO TEST VALUES ('차');
INSERT INTO TEST VALUES ('카');
INSERT INTO TEST VALUES ('나');
INSERT INTO TEST VALUES ('파');
INSERT INTO TEST VALUES ('사');
COMMIT;

 

1. Rownum은 Table에서 Fetch 순의 발번이다.

SELECT  NAME
,       ROWNUM
FROM TEST
WHERE ROWNUM <= 5
ORDER BY NAME ASC;


NAME       ROWNUM
---------- ------
마              2 
아              4 
자              5 
타              3 
하              1 

 

2. Index를 걸면 Index순으로 Fetch후 발번하기 때문에 정렬되어 조회된다.

CREATE UNIQUE INDEX IDX_TEST ON TEST (NAME ASC);


SELECT  NAME
,       ROWNUM
FROM TEST
WHERE NAME > ' '
AND ROWNUM <= 5
ORDER BY NAME ASC;


NAME       ROWNUM
---------- ------
가              1 
나              2 
다              3 
라              4 
마              5 

 

3. Index가 없으면 역시 Table에서 Fetch된 순으로 발번된다.

DROP INDEX IDX_TEST;


SELECT  NAME
,       ROWNUM
FROM TEST
WHERE NAME > ' '
AND ROWNUM <= 5
ORDER BY NAME ASC;




NAME       ROWNUM
---------- ------
마              2 
아              4 
자              5 
타              3 
하              1