2011-08-30 3 views
4

일반적으로 테이블의 모든 인덱스는 테이블 에 대한 INSERT를 3 배 늦 춥니 다. 일반적으로 두 개의 인덱스를 사용하면 두 개의 인서트를 하나의 인덱스로 느리게 두 번 만들게됩니다. (그러나 두 부분으로 된 단일 색인은 단일 부분 색인 인 보다 훨씬 나쁨). 두 부분으로 이루어진 단일 색인은 무엇을 의미합니까?

나는 리처드 Niemiec (오스본 오라클 보도 시리즈)에 의해 도서 오라클 9i의 성능 튜닝 팁 및 기술에서이 있어요.

다음과 같은 용어의 의미는 무엇입니까 :

  1. 두 부분으로 단일 인덱스
  2. 단일 부품 단일 인덱스
  3. 인덱스를 더 이상 종류가 있습니까?

.

답변

7

2 부분 색인으로 가정 할 때, 리치는 복합 색인, 즉 여러 열에 작성된 색인을 의미합니다. 이 같은 하나의 부분 인덱스 색인 반면

create index t23_t_idx on t23 (col4, col2); 

단일 컬럼 : 상기 생성

create index t23_s_idx on t23(col1); 

인덱스는 B- 트리 인덱스이다. Oracle에는 다른 많은 유형의 색인이 있습니다. 처음에는 인덱스가 고유 할 수 있습니다.이 경우 인덱스 된 열에서 지정된 값의 인스턴스 하나 (또는 ​​복합 열에 대한 값의 순열) 만 허용됩니다.

비트 맵 인덱스도 있는데, DML에서 성능이 훨씬 좋아 지지만 특정 쿼리 유형의 속도가 향상됩니다. 데이터웨어 하우스 외부의 비트 맵 인덱스를 찾는 것은 거의 없습니다.

결정 기반 함수 (즉, 주어진 입력에 대해 동일한 결과를 생성하는 것으로 보장되는 함수)의 결과를 인덱싱 할 수있는 함수 기반 인덱스를 만들 수 있습니다. 이것은 우리가 시간 요소를 무시 날짜 컬럼에 인덱스를 구축 할 수있는 방법이다 : 우리는 또한 텍스트 열을 도메인 인덱스를 구축 할 수 있습니다

create index t23_fbi_idx on t23(trunc(col_34)); 

. 그리고 분할 된 테이블에는 특별한 인덱스가 있습니다.

모든 내용은 설명서에서 자세히 설명합니다. Find out more.

4

저자가 실제로 용어를 정의하지 않은 것 같기 때문에 두 부분으로 된 단일 색인은 두 개의 열로 구성된 복합 키이고 단일 부분 단일 색인은 단일 열.

5

필자는 "두 부분으로 구성된 단일 색인"에 대해 이야기 할 때 작성자가 복합 색인을 참조한다고 가정합니다. "복합 인덱스"라는 용어는 테이블의 여러 열에 대한 인덱스를 참조하는 훨씬 더 일반적인 방법입니다.

두 개의 열에 하나의 합성 색인이있는 경우 삽입 중에 유지해야하는 색인 ​​구조가 하나만 있으므로 색인 유지 관리의 오버 헤드가 하나의 단일 열 색인 유지 관리 오버 헤드와 크게 다르지 않습니다.개별적으로 각각의 컬럼에 별도의 인덱스를 작성하는 경우, 다른 한편으로

CREATE TABLE t1 (
    col1 NUMBER, 
    col2 NUMBER, 
    col3 NUMBER 
); 

CREATE INDEX t1_composite_idx 
    ON t1(col1, col2); 

는, 오라클은

CREATE TABLE t1 (
    col1 NUMBER, 
    col2 NUMBER, 
    col3 NUMBER 
); 

CREATE INDEX t1_idx1 
    ON t1(col1); 

CREATE INDEX t1_idx2 
    ON t1(col2); 

I를 필요 인덱스 유지 보수의 약 두 배 않는 두 개의 별도의 인덱스 구조를 유지해야 그러나 저자가 인용 한 "3 인자"에 대해서는 오히려 경솔 할 것이다. 그 특별한 어림짐작에 의해 포착되지 않는 많은 변수들이 있습니다. 인덱스를 추가하는 것은 삽입 작업에 잠재적으로 상당한 비용을 부과한다는 것을 기억하는 것이 유용하지만, 다른 인덱스를 만드는 것과의 균형을 고려할 때 부과하는 실제 비용을 측정하는 것이 훨씬 유용합니다.

더 많은 종류의 색인이 있습니까?

오라클의 마지막 질문은 오라클에 상당히 다른 유형의 색인이 있습니다 (특히 복합 색인을 다른 유형의 색인으로 계산하는 경우). 이 대답은 한정자없이 "색인"을 참조 할 때 사람들이 일반적으로 의미하는 b * 트리 색인만을 다루고 있습니다. 그러나 오라클은 여러 가지 유형의 인덱스 (b * 트리 인덱스, 비트 맵 인덱스, 텍스트 인덱스 등)를 지원합니다. LOB 인덱스를 생성합니다. 사용자 정의 확장 가능 인덱스를 지원합니다. 그리고 각 유형의 인덱스에는 종종 수십 가지 옵션이 있습니다. 예를 들어, 함수 기반 b * -tree 인덱스 또는 비트 맵 조인 인덱스를 만들거나, Oracle Text 인덱스에 대해 사용자 정의 렉서를 지정하거나, 사용자 정의 유형에 대해 고유 인덱스 구조를 정의 할 수 있습니다.

관련 문제