문제

다른 유형의 인덱스는 무엇이며 각각의 이점은 무엇입니까?

커버링과 클러스터 된 인덱스에 대해 들었습니다. 더 있습니까? 어디에서 사용 하시겠습니까?

도움이 되었습니까?

해결책

  • 고유 - 인덱스에 포함 된 열 (또는 열 세트)에 대한 고유 한 값을 보장합니다.
  • 덮개 - 특정 쿼리 (또는 쿼리 세트)에 사용되는 모든 열이 포함되어있어 데이터베이스가 인덱스 만 사용할 수 있고 결과를 검색하기 위해 실제로 테이블 데이터를 볼 필요가 없습니다.
  • 클러스터 - 이것은 디스크에서 실제 데이터를 주문하는 방법입니다. 즉, 쿼리가 값을 찾기 위해 클러스터 된 색인을 사용하는 경우 모든 데이터에 대한 실제 테이블 행을 찾는 추가 단계를 수행 할 필요가 없습니다. 인덱스에 포함되지 않습니다.

다른 팁

Odetocode에는 기본 차이점을 다루는 좋은 기사가 있습니다

기사에서 말했듯이 :

적절한 인덱스는 대형 데이터베이스에서 우수한 성능에 중요합니다. 때로는 인덱스가 좋지 않은 제대로 쓰여진 쿼리를 보충 할 수 있지만 최상의 쿼리조차도 인덱싱이 좋지 않기가 어려울 수 있습니다.

당신이 방금 시작한다면, 클러스터링 및 복합 인덱스에 중점을 둘 것입니다. 아마도 가장 많이 사용하는 것일 것입니다.

몇 가지 색인 유형을 추가하겠습니다

비트 맵 - 가능한 값이 매우 적을 때 매우 빠르며 많은 공간을 차지하지 않습니다.

분할 - 스토리지 또는 성능 이유에 대해 일반적으로 매우 큰 데이터베이스 개체에서 유리한 일부 속성을 기반으로 인덱스를 분할 할 수 있습니다.

함수/표현 인덱스 - 테이블을 기반으로 일부 값을 사전 계산하고 인덱스에 저장하는 데 사용되며, 매우 간단한 예제는 하위 () 또는 하위 문자열 기능을 기반으로 한 색인 일 수 있습니다.

PostgreSQL은 부분 인덱스가 허용되며, 여기서 술어와 일치하는 행만 인덱싱됩니다. 예를 들어, 활성화 된 레코드에 대해서만 고객 테이블을 색인 할 수 있습니다. 이것은 다음과 같은 것처럼 보일 수 있습니다.

create index i on customers (id, name, whatever) where is_active is true;

인덱스에 많은 열이 있고 비활성 고객이 많으면 공간 측면에서 큰 승리가 될 수 있습니다 (색인은 더 적은 디스크 페이지에 저장됩니다). 따라서 성능. 최소한의 색인을 누르려면 술어를 지정해야합니다.

select name from customers where is_active is true;

기존의 지혜는 색인 선택이 카디널리티를 기반으로해야한다는 것을 시사합니다. 그들은 말할 것입니다.

a 낮은 기타 성별과 같은 열, 비트 맵을 사용하십시오. a 높은 카디널리티 Last_name과 마찬가지로 B- 트리를 사용하십시오.

이것은 오라클의 경우가 아닙니다, 여기서 인덱스 선택은 대신 응용 프로그램 유형 (OLTP 대 OLAP)을 기반으로해야합니다. 비트 맵 인덱스가있는 테이블의 DML은 심각한 잠금 경합을 유발할 수 있습니다. 반면, Oracle CBO는 여러 비트 맵 인덱스를 쉽게 결합 할 수 있으며 비트 맵 인덱스를 사용하여 널을 검색 할 수 있습니다. 일반적으로 :

용을 위해 OLTP 빈번한 DML과 일상적인 쿼리가있는 시스템은 btree를 사용하십시오. 용을 위해 올랩 드물게 DML과 AdHoc 쿼리가있는 시스템은 비트 맵을 사용하십시오.

이것이 다른 데이터베이스에 적용되는지 확실하지 않으며 의견을 환영합니다. 다음 기사는 주제에 대해 추가로 논의합니다.

다른 데이터베이스 시스템마다 동일한 유형의 인덱스에 대해 이름이 다르므로 조심하십시오. 예를 들어, SQL Server 및 Sybase 호출 "Clustered Index"는 Oracle에서 "인덱스 조직화 된 테이블"이라고합니다.

Jason Massie의 블로그를 검색하는 것이 좋습니다.http://statisticsio.com/) 및 브렌트 오자르 (Brent Ozar) (http://www.brentozar.com/) 관련 정보. 그들은 색인을 다루는 실제 시나리오에 대한 게시물이 있습니다.

Oracle에는 B- 트리, 비트 맵, 분할 및 비수분, 역방향 바이트, 비트 맵 조인 및 도메인 인덱스의 다양한 조합이 있습니다.

다음은 주제에 관한 11GR1 문서에 대한 링크입니다. http://download.oracle.com/docs/cd/b28359_01/server.111/b28274/data_acc.htm#pfgrf004

  1. 독특한
  2. 무리
  3. 비 클러스터
  4. 열 상점
  5. 포함 된 열이있는 색인
  6. 계산 된 열에서 색인
  7. 거르는
  8. 공간
  9. XML
  10. 전문

SQL Server 2008 필터링 된 인덱스, PostgreSQL과 유사합니다 부분 색인. 둘 다 지정된 기준 일치하는 줄만 인덱스에 포함시킬 수 있습니다.

구문은 PostgreSQL과 동일합니다.

create index i on Customers(name) where is_alive = cast(1 as bit);

인덱스 유형과 의미 방문을 볼 수 있습니다.https://msdn.microsoft.com/en-us/library/ms175049.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top