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 |
댓글