순차적으로 정수 값을 자동으로 생성하는 객체
테이블당 각각의 시퀀스를 만들어 놓고 그 테이블의 기본키나 대체키로 사용
CREATE SEQUENCE sequence_name
[INCREMENT BY n][START WITH n]
[{MAXVALUE n | NOMAXVALUE}][{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}][{CACHE n | NOCACHE}];
// CREATE SEQUENCE
CREATE SEQUENCE SEQ_EMPID
START WITH 300
INCREMENT BY 5
MAXVALUE 310
NOCYCLE
NOCACHE;
SELECT SEQ_EMPID.NEXTVAL FROM DUAL;
// VALUE로 사용
INSERT INTO EMPLOYEE (EMP_ID, EMP_NO, EMP_NAME)
VALUES (TO_CHAR(SEQ_ID.NEXTVAL), 123, 'KIM');
테이블의 row와 하나씩 대응되는 별도의 객체
Optimizer가 최적의 실행 경로를 설정하는데 중요한 Factor가 됨
모든 테이블에는 ROWID, ROWNUM이라는 컬럼이 숨겨져 있다
구성
인덱스를 생성시킨 컬럼의 값(VALUE) + 그 행의 논리적 주소(ROWID)
성능 향상
기본키는 INDEX가 걸려있다
외래 키도 자주 참조하므로 INDEX를 걸 수 있으나 NULL이 들어있으면 INDEX가 풀려버림
CREATE [UNIQUE] INDEX index_name ON table_name (column_list | function, expr);
DROP INDEX index_name ON table_name;
모든 JOIN에서 사용
하나의 테이블을 기준으로 순차적으로 상대 테이블의 ROW를 결합하여 원하는 결과를 추출하는 테이블 JOIN 방식
DRIVING 테이블: 결합하기 위한 기준 테이블
DRIVEN 테이블: 결합되기 위한 테이블
DRIVING 테이블 선정에 따라 수행 시간의 엄청난 차이 발생
TIP) JOIN 할때 부모부터 거는 게 아니라 레코드 수가 적은 것부터 거는 방식을 택한다
인덱스가 있어야 NESTED LOOP JOIN의 제대로 된 성능을 보장할 수 있다
TIP) WHERE절에 있는 컬럼에 인덱스가 있어야지만 NESTED LOOP JOIN이 빛을 발할 수 있다
EQUI JOIN에서만 가능
잘 사용 X
출처: SHINSEGAE I&C 인턴십