의사컬럼(Raeudocolumns) - 테이블에 있는 일반적인 컬럼처럼 행동하기는 하지만 실제로 테이블에 저장되어 있지 않은 컬럼, 유령컬럼이라고도 부른다네~
종류로는 ROWNUM , ROWID 가 있다.
1. ROWNUM
SQL> select * from dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> select dname, loc, rownum from dept where rownum<=3;
DNAME LOC ROWNUM
-------------- ------------- ----------
ACCOUNTING NEW YORK 1
RESEARCH DALLAS 2
SALES CHICAGO 3
딱 보면 알겠지만~ 페이징 처리할때 로우넘을 두번 휙휙~ 하면 된다. 하지만.....
데이터의 양이 많이 경우 페이징처리에서는 인덱스사용을 추천- _-)b
데이터의 양이 적은데 괜히 인덱스 사용하면....오히려 퍼포먼스 다운!!~~되는건 잊지말자= _=;
2. ROWID - 테이블에 저장된 각각의 로우들이 저장된 주소값을 가진 의사컬럼이다. 즉 모든 테이블의 모든 로우들은 오직 자신만의 유일한 ROWID 값을 갖고 ROWID 로 식별할수도 있다.
SQL> select dname,deptno, rowid from dept;
DNAME DEPTNO ROWID
-------------- ---------- ------------------
ACCOUNTING 10 AAAHW5AABAAAMUSAAA
RESEARCH 20 AAAHW5AABAAAMUSAAB
SALES 30 AAAHW5AABAAAMUSAAC
OPERATIONS 40 AAAHW5AABAAAMUSAAD
위에서 보면 눈에 딱 보이는 저것!! ROWID!! 저것의 특징으로 말하면 세가지가 있다.
1. 단일 로우에 접근하는 가장 빠른수단
2. 테이블에 로우들이 어떻게 저장되는지를 보여준다
3. 한 테이블에서 ROWID 값은 유일한 값이다.
.....=_=;그냥..별거 없다?...라고 봐도 ....단일 로우 접근에 가장 빠르고 유일한 값이다...가 끝인듯..
뭐....ROWNUM이나 ROWID 는 SELCT 나 WHERE에서 사용이 가능하지만 INSERT나 UPDATE에서는 실제로 테이블에 저장된 값이 아니기 때문에 안된다....
당연하지..=_=;;;..