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