수색…


소개

여기서는 예제를 사용하여 다른 인덱스를 설명하고, 인덱스 증가 쿼리 성능, 인덱스 감소 DML 성능 등을 설명합니다.

B- 트리 색인

CREATE INDEX ord_customer_ix ON orders (customer_id);

기본적으로 아무 것도 언급하지 않으면 oracle은 b-tree 인덱스로 인덱스를 생성합니다. 그러나 우리는 그것을 언제 사용해야 하는지를 알아야합니다. B- 트리 색인은 데이터를 2 진 트리 형식으로 저장합니다. 우리가 알고 있듯이, index는 인덱스 된 컬럼에 대한 각 값에 대한 일종의 항목을 저장하는 스키마 객체입니다. 따라서 해당 열에서 검색이 수행 될 때마다 색인에서 해당 레코드의 정확한 위치를 확인하여 빨리 액세스합니다. 색인 생성에 관한 몇 가지 사항 :

  • 인덱스에서 엔트리를 검색하기 위해, 어떤 종류의 바이너리 검색 알고리즘이 사용되었습니다.
  • 데이터 카디널리티가 높으면 B- 트리 색인을 사용하는 것이 좋습니다.
  • 인덱스는 DML을 느리게 만듭니다. 각 레코드에 대해 인덱스 된 컬럼에 대해 인덱스에 하나의 항목이 있어야합니다.
  • 따라서 필요하지 않은 경우 색인을 작성하지 않아야합니다.

비트 맵 색인

CREATE BITMAP INDEX 
emp_bitmap_idx
ON index_demo (gender);
  • 비트 맵 인덱스는 데이터 카디널리티가 낮을 때 사용됩니다 .
  • 여기서 성별 은 낮은 카디널리티를 갖는 가치가 있습니다. 값은 남성, 여성 및 기타가 될 수 있습니다.
  • 따라서 검색하는 동안이 3 가지 값에 대한 이진 트리를 만들면 불필요한 통과가 발생합니다.
  • 비트 맵 구조에서 2 차원 배열은 인덱싱되는 테이블의 모든 행에 대해 하나의 열로 만들어집니다. 각 열은 비트 맵 인덱스 내의 고유 한 값을 나타냅니다. 이 2 차원 배열은 인덱스 내의 각 값에 테이블의 행 수를 곱한 값을 나타냅니다.
  • 행 검색시 오라클은 비트 맵을 RAM 데이터 버퍼로 압축 해제하므로 일치하는 값을 빠르게 검색 할 수 있습니다. 이러한 일치 값은 Row-ID 목록 형식으로 Oracle에 전달되며 이러한 Row-ID 값은 필요한 정보에 직접 액세스 할 수 있습니다.

기능 기반 색인

CREATE INDEX first_name_idx ON user_data (UPPER(first_name));


SELECT *
FROM   user_data
WHERE  UPPER(first_name) = 'JOHN2';
  • 함수 기반 인덱스는 함수를 기반으로 인덱스를 만드는 것을 의미합니다.
  • 검색 (where 절)에 자주 사용되는 함수가있는 경우 해당 함수를 기반으로 인덱스를 만드는 것이 좋습니다.
  • 여기서는 검색의 경우 Upper () 함수를 사용하고 있습니다. 따라서 상위 함수를 이용하여 인덱스를 생성하는 것이 좋습니다.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow