Why 인덱스?
: FULL SCAN 안 하도록 하자!!!!
- 성능 향상 (B*tree 구조)
- 일정한 검색 속도를 유지 시켜준다 (자동으로 b*tree 형태로 균형화 하기 때문에)
(-primary 키만 생성해줘도 기본적인 index는 생성이 된다 또 다른 컬럼에 대해서도 인덱스 생성 가능!!)
: 컬럼 속에 있는 레코드 하나하나에 인덱스를 하나 만들어줘서 각각의 값에 대하여 해당하는 ROWID값에 다 주소값을 만들어놓는다
인덱스 생성 방법
CREATE INDEX 테이블이름_인덱싱하고자는컬럼명_idx on 테이블이름(컬럼명);
CREATE TABLE BOARD(
SEQ NUMBER PRIMARY KEY,
TITLE VARCHAR2(50),
WRITER VARCHAR2(50),
CONTENTS VARCHAR2(200),
REGDATE DATE,
HITCOUNT NUMBER
)
INSERT INTO BOARD VALUES(1,'A1','A','A',SYSDATE,0);
INSERT INTO BOARD VALUES(2,'A2','A','A',SYSDATE,0);
INSERT INTO BOARD VALUES(3,'A3','A','A',SYSDATE,0);
INSERT INTO BOARD VALUES(4,'A4','A','A',SYSDATE,0);
INSERT INTO BOARD VALUES(5,'A5','A','A',SYSDATE,0);
INSERT INTO BOARD VALUES(6,'A6','A','A',SYSDATE,0);
INSERT INTO BOARD VALUES(7,'A7','A','A',SYSDATE,0);
INSERT INTO BOARD VALUES(8,'A8','A','A',SYSDATE,0);
INSERT INTO BOARD VALUES(9,'A9','A','A',SYSDATE,0);
INSERT INTO BOARD VALUES(10,'A10','A','A',SYSDATE,0);
select * from board where title='A7';
create index board_title_index
on board(title);
select * from board where title='A7';
인덱스 보충
F10 키 눌러주면-계획설명
1. 인덱스 ( INDEX ) 정의
primary key 를 검색할 때는 내부적으로 index라는 것을 가지고
있어서 빨리 검색할 수 있도록 도와준다. (속도 up!)
ROWID를 저장하고 관리함.
모든 데이터를 읽어서 검색하면 FULL SCAN
2.인덱스 만들기
CREATE INDEX 만들고자하는인덱스명
ON 있는테이블(DATA);
CREATE INDEX EMP_ENAME_IDX
;ON EMP(ENAME);
확인하는 것(비교 FULLSCAN, INDEX)
-FULL SCAN 시 설명
-인덱스 만든 후 검색
3.인덱스 사용하지 않는 경우
1.조건문에 NOT 부정문
2.NULL 관련 IS NULL, IS NOT NULL
3.컬럼 변형(TO_NUMBER 같은)
'DataBase > DBMS' 카테고리의 다른 글
12-3.시퀀스 (SEQUENCE) (0) | 2021.02.22 |
---|---|
12-2.뷰(View) (0) | 2021.02.22 |
11. 서브쿼리(하위 질의문) : SQL의 꽃2 (WHERE절, HAVING절, FROM절-n-tier) (0) | 2021.02.22 |
10. JOIN(조인) : SQL의 꽃1 (조인, ANSI조인) (0) | 2021.02.22 |
9-2. 두개의 컬럼을 묶어서 PK 설정, 하나의 컬럼에 두가지 제약조건 설정 (0) | 2021.02.18 |