INDEX의 기초
INDEX란 포인터를 사용하여 행 검색 속도를 높일 수 있는 스키마 객체이다.
INDEX를 사용할 경우 테이블의 COLUMN에 직접 빠르게 엑세스할 수 있는데, 그 이유는
INDEX는 INDEX화된 경로를 사용하여 데이터를 신속하게 찾기 때문에 디스크 I/O를 줄여주기 때문이다.
ROWID : 행에 저장된 데이터의 논리적인 주소값
1 2 | SELECT ROWID, E.* FROM EMP E; | cs |
이것을 조금 활용하면
1 2 3 4 | SELECT ROWID, E.* FROM EMP E WHERE ROWID = 'AAAE+oAAAAAAAETAAF'; --INDEX보다 값을 더 빠르게 찾는 방법 : 어느 주소에 있는 값을 가져오라는 뜻이다. | cs |
위와 같이 사용가능하다.
하지만 이경우, 우리가 ROWID값을 하나하나 복사 할 수는 없으므로
INDEX를 사용한다.
인덱스를 생성하는 구문은 아래와 같다.
1 2 | CREATE [UNIQUE][BITMAP]INDEX index ON table (column[, column]...); | cs |
구문 |
설명 |
index |
인덱스 이름 |
table |
테이블 이름 |
column |
인덱스화될 열 이름 |
INDEX는 두가지로 구분된다.
유형 |
설명 |
고유인덱스 |
테이블 정의시 COLUMN이 PK 또는 UNIQUE의 속성을 가질경우 자동으로 생성된 인덱스이다. |
비고유인덱스 |
수동으로 유저가 생성하는 인덱스이다 |
INDEX는 많은 양의 데이터에서 극히 소량의 데이터를 찾을경우 사용하면 된다.
주의할 점으로는 INDEX가 많다고 좋은 것은 아니다. INDEX의 갱신은 DML작업후 COMMIT을 하는 과정에서 이루어지는데, 인덱스가 많을경우 서버에 부담이 갈 수가 있다.
SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.
'DATABASE(oracleDB 11g) > SQL' 카테고리의 다른 글
[SQL]정규식 함수의 기초 (0) | 2019.02.14 |
---|---|
[SQL]동의어 기초 (0) | 2019.02.14 |
[SQL]SEQUENCE(시퀀스)의 기초 (0) | 2019.02.14 |
[SQL]EXISTS 의 보충 (0) | 2019.02.11 |
[SQL]서브쿼리(SUBQUERY)의 종류 (0) | 2019.02.08 |