부분지수

Partial index

데이터베이스에서 필터링된 색인이라고도 하는 부분 인덱스의 하위 집합을 포함하도록 일부 조건이 적용된 색인이다.

이렇게 하면 테이블이 다소 클 수 있지만 지수를 작게 유지할 수 있으며 선택성이 매우 높다.

항목이 STATUS = 'A'(활성)로 시작되면 최종 상태 'F'에 도달하기 전에 다른 상태('미결 상태의 경우 P', '작업 중'의 경우 'W')를 통과할 수 있는 트랜잭션 테이블이 있다고 가정해 보십시오. 이 테이블은 더 이상 다시 처리될 가능성이 없다.

인 포스트그레SQL, 유용한 부분 인덱스는 다음과 같이 정의될 수 있다.

만들다 색인을 달다 부분_상태 에 관하여 txn_table (지위)  어디에 지위  ('A', 'P', 'W'); 

이 인덱스는 "최종" 상태인 'F'에 도달한 수백만 개의 행 중 어떤 것도 저장하지 않으며, 이 인덱스를 통해 효율적으로 검색하기 위해 여전히 "필수 작업"인 트랜잭션을 찾는 쿼리를 허용한다.

마찬가지로 부분 인덱스는 열이 null이 아닌 행만 인덱싱하는 데 사용할 수 있으며, 일반적으로 열이 null일 때 유용하다.

만들다 색인을 달다 부분_object_update 에 관하여 object_table (updated_on)  어디에 updated_on 이다 아닌 무효의; 

이 인덱스를 사용하면 다음과 같은 쿼리가 업데이트된 튜플만 읽을 수 있다.

선발하다 * 로부터 object_table  어디에 updated_on 이다 아닌 무효의  주문 에 의해 updated_on; 

그 조건이 지수 기준과 같을 필요는 없다. 아래의 스톤브레이커 논문은 다음과 유사한 지수를 가진 많은 예를 제시한다.

만들다 색인을 달다 부분_부분적 에 관하여 종업원(나이를 먹다)  어디에 봉급 > 2100; 

지원

SQL Server에서 이러한 유형의 인덱스를 필터링된 인덱스라고 한다.[1]

부분 인덱스는 Postgre에서 지원됨2002년 2월에 출시된 버전 7.2 이후 SQL.[2]

SQLite는 버전 3.8.0 이후 부분 인덱스를 지원한다.[3]

몽고DB는 버전 3.2 이후 부분 인덱스를 지원한다.[4]

버전 8.0의 MySQL은 부분 인덱스를 지원하지 않는다.MySQL에서 "부분 인덱스"라는 용어는 접두사 인덱스를 가리키는 데 사용되기도 하는데, 여기서 각 값의 잘린 접두사만 인덱스에 저장된다.이것은 인덱스 크기를 줄이는 또 다른 기법이다.[5]

참조

  1. ^ SQL Server 2008 Documentation: Filtered Index Design Guidelines. Microsoft TechNet.
  2. ^ "PostgreSQL Documentation: Release Notes: Release 7.2". PostgreSQL. Retrieved 2009-10-09. Enable partial indexes (Martijn van Oosterhout)
  3. ^ "Partial Indexes". Retrieved 2014-02-04.
  4. ^ MongoDB V302 Release Notes.
  5. ^ Ronald Bradford (2009-07-22). "Understanding Different MySQL Index Implementations".

외부 링크