오라클 생성 인덱스

Olakeul Saengseong Indegseu



Oracle 데이터베이스에서 인덱스는 데이터베이스 테이블에서 데이터 검색 작업의 속도를 향상시키는 데이터 구조를 나타냅니다. 그러나 이는 데이터베이스의 추가 쓰기 작업 및 저장 공간에 대한 불이익을 초래할 수 있습니다.

데이터베이스 인덱스가 유용한 한 가지 예는 고객 관계 관리 시스템입니다.







이러한 시스템에서는 고객 정보를 저장하는 데이터베이스 테이블을 가질 수 있습니다. 여기에는 이름, 주소, 지불 방법, 연락처 정보 등이 포함될 수 있습니다.



테이블에 많은 레코드, 아마도 수백만 개의 레코드가 있는 경우 데이터베이스에서 특정 고객 정보를 검색하는 데 시간과 리소스가 오래 걸릴 수 있습니다. 이것은 특히 성능이 중요한 데이터베이스에서 부정적인 현상입니다.



이를 우회하기 위해 데이터베이스 색인을 사용할 수 있습니다.





예를 들어 데이터베이스 시스템이 이름을 사용하여 특정 고객의 정보를 빠르게 찾고 검색할 수 있도록 고객의 이름 열에 인덱스를 만들 수 있습니다. 따라서 데이터베이스 엔진이 테이블의 모든 행과 열을 살펴보는 대신 인덱스만 사용하여 고객 정보를 조회합니다.

이 자습서에서는 Oracle 데이터베이스에서 CREATE INDEX 명령을 사용하여 새 인덱스를 초기화하는 방법을 배웁니다.



Oracle Create Index 문

다음은 Oracle 데이터베이스에서 CREATE INDEX 문의 구문을 보여줍니다.

CREATE INDEX index_name
ON table_name(열1, 열2, ...);

위의 구문은 지정된 열(column1, column2 등)을 인덱스의 키로 사용하여 이름이 table_name인 테이블에 index_name이라는 인덱스를 만듭니다.

Oracle에서 기본 키는 테이블의 각 행을 고유하게 식별하는 열 또는 열 집합입니다. 기본적으로 Oracle은 고유성 제약 조건을 적용하고 기본 키 조회 성능을 향상시키기 위해 테이블의 기본 키 열에 고유 인덱스를 자동으로 생성합니다.

그러나 경우에 따라 특정 테이블에 대한 새 인덱스를 수동으로 만들어야 할 수도 있습니다.

이를 달성할 수 있는 방법에 대한 몇 가지 예를 살펴보겠습니다.

Oracle 인덱스 생성 예제

아래 출력과 같이 직원 정보가 포함된 테이블이 있다고 가정합니다.

EMPLOYEES에서 이름, 성, 급여, 고용 날짜를 선택하십시오.

단일 열에 대한 Oracle 생성 인덱스

first_name 열을 사용하여 인덱스를 생성한다고 가정합니다. 다음과 같이 쿼리를 실행할 수 있습니다.

EMPLOYEES(FIRST_NAME)에 인덱스 first_name_lookup 생성;

이 CREATE INDEX 문은 FIRST_NAME 열을 인덱스의 키로 사용하여 EMPLOYEES 테이블에 first_name_lookup이라는 인덱스를 생성합니다. 이 인덱스는 이름으로 직원을 검색하는 쿼리의 성능을 향상시키는 데 사용할 수 있습니다.

색인이 생성되면 다음과 같이 특정 직원을 검색하는 데 사용할 수 있습니다.

SELECT first_name, last_name, 급여, 고용 날짜
직원으로부터
WHERE first_name = '윌리엄';

결과:

first_name_lookup 인덱스가 없으면 데이터베이스 시스템은 FIRST_NAME 열이 'William'인 모든 행을 찾기 위해 전체 EMPLOYEES 테이블을 스캔해야 합니다. 'John' 값을 키로 사용하여 색인을 생성한 다음 테이블에서 요청된 행을 검색하면 훨씬 빠릅니다.

다음과 같이 Explain Plan 명령을 사용하여 쿼리를 만들 때 사용되는 단계를 볼 수 있습니다.

SELECT 이름, 성, 급여, 고용일에 대한 계획 설명
직원으로부터
WHERE first_name = '윌리엄';

결과 쿼리 계획:

예 2 – 여러 열이 있는 Oracle 생성 인덱스

마찬가지로 주어진 테이블에서 둘 이상의 열로 구성된 인덱스를 만들 수 있습니다. 예를 들어 first_name 및 last_name 열로 구성된 인덱스를 생성한다고 가정합니다.

다음과 같이 코드를 사용할 수 있습니다.

EMPLOYEES(FIRST_NAME, LAST_NAME)에 인덱스 multi_lookup 생성;

이 CREATE INDEX 문은 FIRST_NAME 및 LAST_NAME 열을 인덱스의 키로 사용하여 EMPLOYEES 테이블에 multi_lookup이라는 인덱스를 생성합니다.

일단 생성되면 다음과 같이 샘플 쿼리에 표시된 대로 이 인덱스를 사용할 수 있습니다.

SELECT first_name, last_name, 급여, 고용 날짜
직원으로부터
WHERE first_name = '윌리엄' AND last_name = '스미스';

결과 값:

그리고 인덱스를 사용하여 검색 범위를 제한함으로써 데이터베이스 쿼리 속도를 높이는 방법이 있습니다.

결론

Oracle의 CREATE INDEX 문을 사용하면 테이블에 인덱스를 생성하여 데이터 검색 작업의 성능을 향상시킬 수 있습니다. 그러나 인덱스는 쿼리 성능을 향상시킬 수 있지만 저장 공간에 불이익이 있어 쓰기 속도 작업이 느려지므로 필요할 때만 사용하십시오.