본문 바로가기
SQL

INDEX

by Minius 2018. 3. 8.
반응형

INDEX


INDEX, 생성


목적 : 도서의 색인이나 사전과 같이 데이터를 쉽고 빠르게 만든 가상의 테이블이다.


데이터 베이스의 물리적 저장


B-tree

- 루트 노드

- 내부 노드

- 리프 노드


고려사항

- where절에 자주 사용되는 속성이어야 함

- 조인에 자주 사용되는 속성이어야 함

- 단일 테이블에 인덱스가 많으면 속도가 느려질 수 있다. (테이블 당 4~5개 적절)

- 속성이 가공되는 경우 사용하지 않는다.

- 속성의 선택도가 낮을 때 유리함. (속성의 모든 값이 다른 경우)

- 변경이 많이 일어나는 데이터에는 사용하지 않는게 좋다.


속성의 선택도

BAD : 값 2개 = 1/2 50%

GOOD : 값 100개 = 1/100 1% 일 때

1%짜리가 인덱스를 만들기 유리함.

검색할 조건 및 값이 많을수록 유리.



INDEX 생성 문법


CREATE [REVERSE] [UNIQUE] INDEX [인덱스 이름]

ON 테이블 이름 (컬럼 [ASC | DESC] [{, 컬럼 [ ASC | DESC ]}...])[;]


CREATE INDEX IX_BOOK ON BOOK(BOOKNAME);










인덱스의 재구성과 삭제


재구성은 ALTER INDEX 명령을 사용하여 수행한다.

B-TREE인덱스는 수정, 삭제, 삽입이 잦으면 단편화라는 현상이 일어나게 되는데, 단편화란 삭제된 레코드의 값 자리가 비게 되는 상태를 말한다.

이는 검색시 성능 저하로 이어진다.


재구성


ALTER INDEX 인덱스 이름 ON 테이블 이름 REBUILD;


ALTER INDEX IX_BOOK REBUILD;


위 문법에서 REBUILD는 인덱스를 다시 생성하여 단편화가 많이 생성된 기존의 인덱스를 버리는 작업을 한다.


삭제


DROP INDEX 인덱스 이름;


DROP INDEX IX_BOOK;









'SQL' 카테고리의 다른 글

SQL 내장함수 예제  (0) 2018.03.14
TRANSACTION  (0) 2018.03.08
View  (0) 2018.03.08
2018-03-07 SQL  (0) 2018.03.07
SQL 연습문제 답  (0) 2018.03.06

댓글