단일 토토 베이 스캔은 토토 베이의 열을 연산자 클래스의 연산자와 함께 사용하고를 사용하는 쿼리 클로만 만 사용할 수 있습니다and
. 예를 들어, 토토 베이가 주어지면(a, b)
쿼리 조건과 같은여기서 a = 5 및 b = 6
토토 베이를 사용할 수 있지만 쿼리와 같은여기서 a = 5 또는 b = 6
색인을 직접 사용할 수 없음.
다행스럽게도PostgreSQL단일 토토 베이 스캔으로 구현할 수없는 케이스를 처리하기 위해 여러 토토 베이 (동일한 토토 베이의 여러 사용 포함)를 결합 할 수 있습니다. 시스템이 형성 될 수 있습니다and
and또는
여러 토토 베이 스캔의 조건. 예를 들어, 쿼리와 같은여기서 x = 42 또는 x = 47 또는 x = 53 또는 x = 99
in 토토 베이의 4 개의 별도 스캔으로 나눌 수 있습니다x
, 각 각 스캔 쿼리 절 중 하나를 사용하여 스캔합니다. 그런 다음이 스캔의 결과를 함께 뿌려 결과를 생성합니다.x
andy
, 쿼리와 같은 가능한 하나의 구현여기서 x = 5 및 y = 6
| 각 인덱스를 적절한 쿼리 조항과 함께 사용한 다음 인덱스 결과를 함께 사용하여 결과 행을 식별합니다.
여러 토토 베이를 결합하려면 시스템이 필요한 각 토토 베이를 스캔하고 a를 준비합니다.비트 맵메모리에서 인덱스 조건에 맞는 테이블 행의 위치를 제공합니다. 그런 다음 비트 맵은 쿼리에 의해 필요에 따라 anded 및 켜집니다.주문 by
절. 이러한 이유로, 각 추가 토토 베이 스캔이 추가 시간을 추가하기 때문에 플래너는 추가 토토 베이를 사용할 수 있더라도 간단한 토토 베이 스캔을 사용하기로 선택합니다..
가장 간단한 애플리케이션을 제외한 모든 인덱스 조합이 유용 할 수있는 다양한 인덱스 조합이 있으며 데이터베이스 개발자는 어떤 인덱스를 제공 해야하는지 결정해야합니다. 때로는 여러 가지 색 인덱스가 가장 좋지만 때로는 별도의 인덱스를 생성하고 인덱스-컴포업 기능에 의존하는 것이 좋습니다.x
, 때로는 열y
, 때로는 두 열에서 두 개의 개별 색인을 만들 수 있습니다x
andy
, 토토 베이 조합에 의존하여 두 열을 사용하는 쿼리를 처리합니다. 에서 멀티 컬럼 토토 베이를 만들 수도 있습니다.(x, y)
. 이 토토 베이는 일반적으로 두 열을 포함하는 쿼리에 대한 토토 베이 조합보다 더 효율적이지만PostgreSQL : 문서 : 14 : 11.3. 멀티 컬럼 스포츠 토토 결과, 전용 쿼리에는 거의 쓸모가 없습니다y
이므로 유일한 색인이되어서는 안됩니다. 멀티 컬럼 토토 베이와 별도의 색인의 조합y
합리적으로 잘 봉사 할 것입니다. 전용 쿼리x
, 멀티 컬럼 토토 베이는 사용될 수 있지만, 더 크고 토토 베이보다 느리게x
혼자. 마지막 대안은 세 토토 베이를 모두 만드는 것이지만, 테이블이 업데이트 된 것보다 훨씬 더 자주 검색되고 세 가지 유형의 쿼리가 모두 일반적인 경우에만 합리적 일 수 있습니다.
올바르지 않은 문서에 아무것도 표시되면 일치하지 않습니다.이 양식문서 문제를보고하려면