본문 바로가기
Programming/오라클[SQL]

오라클[sql] 시퀀스 / 인덱스

by 콩king 2022. 9. 24.

시퀀스

▶ 자동증가수

 

시퀀스 생성  

CREATE SEQUENCE seq_no

  Minvalue 1 -- 최소숫자

  Maxvalue 9999999999 -- 최대숫자

  Increment by 1 -- 증가치

  start with 1 -- 시작숫자

  nocache -- 조금빠르게 접근가능한 옵션

  noorder -- 요청되는 순서대로 할당

  nocycle -- 다시 재반복여부

  ;

 

시퀀스 호출방법

▶시퀀스이름.nextval : 다음 생성할 시퀀스 값

▶ 시퀀스이름.currval : 현재 시퀀스 값

SELECT seq_no.nextval from dual;

SELECT seq_no.currval from dual;

 

예제

 

CREATE TABLE temp(

no NUMBER Primary key,

name VARCHAR2(20),

indate DATE

);

INSERT INTO temp

VALUES (seq_no.nextval, '뿅뿅1', sysdate);

 

INSERT INTO temp

VALUES (seq_no.nextval, '뿅뿅1', sysdate);

 

SELECT * FROM temp;

 

 

인덱스

▶ 빠른검색을 위한 데이터

-- 자주 사용되는 컬럼을 인덱스컬럼으로 선택 ( WHERE 조건이나 조인시 많이 사용하는 컬럼 )
-- 데이터량이 많은 경우 > 20%정도 되는 데이터를 조회할 때는 월등히 빠릅니다.
-- 데이터 변경이 적을 경우에서의 인덱스 사용은 좋습니다.
-- 데이터의 양이 적은 테이블은 인덱스와 무관할 정도의 속도가 나옵니다.

▶ 조회 > 미리 사전에 정의된 검색어를 만드는 것

▶ PK, UNIQUE > 식별 가능한 데이터이기 때문에 미리 인덱스화

 

인덱스 지침

▶ 많은 것이 좋은것은 아닙니다.
     -- DML이 진행이 되면 인덱스 갱신해야 하기 때문에 속도 저하

▶ WHERE 조건과 join 조건으로 자주 사용하는 경우에만 작성 권장

▶ 생성하지 않을 경우 : 테이블이 적은것, 질의 조건으로 잘 안쓰임, 자주 갱신하는 테이블

 

예제

SELECT * FROM gogek;

 

 SELECT /*+ index(gogek PK_GOGEK_ID) */ id, name

FROM gogek

WHERE name = '홍길동';

 

'Programming > 오라클[SQL]' 카테고리의 다른 글

오라클[sql] 조건문 IF / CASE  (0) 2022.09.24
오라클[sql] PL/SQL  (0) 2022.09.24
오라클[sql] merge / commit / rollback  (0) 2022.09.24
오라클[sql] 연습문제  (0) 2022.09.24
오라클[sql] 서브쿼리 / 연습문제  (0) 2022.09.24

댓글