SQL - INDEX

SQL/ORACLE 2014. 2. 12. 16:19
728x90
반응형

인덱스

데이터베이스 서버로 전달된 사용자의 SQL문장이 서버-프로세스에 의하여 처리되어 최종적인 결과를 표시하기 위해서는 디스크에 저장된 데이터를 서버의 메모리로 로드 해야 한다.

이 때 , 디스크 상에 저장된 데이터를 메모리로 로드하여, 모든 데이터를 처리하는 전체 테이블 스캔 (Full-Table Scan) 방법과 인덱스를 이용하여 SQL 문장의 처리 대상이 되는 행이 저장된 테이블의 데이트 블록만을 디스크로부터 메모리로 로드 하는 인덱스 스캔(Index Scan) 방법의 두 가지가 있다.

 

테이블에 저장된 매우 적은 수의 행을 찾아서 원하는 결과를 제공하는 SQL 문장의 경우에는 인덱스 객체를 이용하여 원하는 행이 있는 디스크 상의 데이터 블록만을 메모리에 로드 하기 때문에 디스크에 대한 엑세스 횟수를 줄일 수 있다.

 

인덱스는 이럴 때 , 이렇게 사용하라

 

테이블에 저장된 행이 매우 많고 대부분의 쿼리들에서 그 테이블에 저장된 행의 2~4% 미만의 데이터를 추출할 때, 해당 테이블에 꼭 필요한 인덱스를 생성할 것을 권장.

테이블에 행이 적다면, 2~4%를 넘는 다수의 데이터를 추출하려거든 사용하지 않는 것을 권장.

 

 

주로 SQL 문장의 where절 또는 join 조건에 자주 나오는 컬럼을 인덱스-키로 가지는 인덱스를 생성한다.

 

where절에 자주 사용되지 않는 컬럼을 인덱스 키로 사용하여 인덱스를 생성하지 말것.

자주 update되어 값이 변경되는 컬럼을 인덱스키로 사용하여 인덱스를 생성하지 말것.

 

인덱스 생성

create index hr.idx_lname_emp on hr.employees(last_name);

 

- index created.

 

위 문장에서, hr.employees.last_name 컬럼이 hr.idx_lname_emp 인덱스의 인덱스-키 이다.

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,