단일 토토 결과 스캔은 토토 결과의 열을 연산자 클래스의 연산자와 함께 사용하고와 함께 사용하는 쿼리 클로만 만 사용할 수 있습니다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
및y
, 쿼리와 같은 가능한 구현여기서 x = 5 및 y = 6
는 적절한 쿼리 조항과 함께 각 색인을 사용한 다음 인덱스 결과를 함께 사용하여 결과 행을 식별합니다.
여러 토토 결과를 결합하려면 시스템이 필요한 각 토토 결과를 스캔하고 a를 준비합니다.비트 맵메모리에서 인덱스 조건에 맞는 테이블 행의 위치를 제공합니다. 그런 다음 비트 맵은 쿼리에 의해 필요에 따라 anded 및 켜집니다. 마지막으로 실제 테이블 행이 방문하여 반환됩니다. 테이블 행은 물리적 순서로 방문됩니다. 비트 맵이 배치되는 방식이기 때문입니다. 즉, 원래 인덱스의 순서가 손실되므로 쿼리에이면 별도의 정렬 단계가 필요합니다.주문 by
절. 이러한 이유로, 각 추가 토토 결과 스캔이 추가 시간을 추가하기 때문에 플래너는 추가 토토 결과를 사용할 수 있더라도 간단한 토토 결과 스캔을 사용하기로 선택합니다..
가장 간단한 애플리케이션을 제외한 모든 인덱스 조합이 유용 할 수있는 다양한 인덱스 조합이 있으며 데이터베이스 개발자는 어떤 인덱스를 제공 해야하는지 결정해야합니다. 때로는 여러 가지 색 인덱스가 가장 좋지만 때로는 별도의 인덱스를 생성하고 인덱스-컴포업 기능에 의존하는 것이 좋습니다. 예를 들어, 워크로드가 때때로 열만 포함되는 쿼리 혼합이 포함 된 경우x
, 때로는 열y
, 때로는 두 열 모두에서 두 개의 개별 색인을 만들도록 선택할 수 있습니다x
andy
, 토토 결과 조합에 의존하여 두 열을 사용하는 쿼리를 처리합니다. 에서 멀티 컬럼 토토 결과를 만들 수도 있습니다.(x, y)
. 이 토토 결과는 일반적으로 두 열을 포함하는 쿼리에 대한 토토 결과 조합보다 더 효율적이지만PostgreSQL : 문서 : 13 : 11.3. 멀티 컬럼 스포츠 토토, 전용 쿼리에는 거의 쓸모가 없습니다y
이므로 유일한 색인이되어서는 안됩니다. 멀티 컬럼 토토 결과와 별도의 색인의 조합y
합리적으로 잘 봉사 할 것입니다. 전용 쿼리x
, 멀티 컬럼 토토 결과는 사용될 수 있지만, 색인보다 더 크고 느리게x
혼자. 마지막 대안은 세 토토 결과를 모두 만드는 것이지만, 테이블이 업데이트 된 것보다 훨씬 더 자주 검색되고 세 가지 유형의 쿼리가 모두 일반적인 경우에만 합리적 일 수 있습니다. 쿼리 유형 중 하나가 다른 쿼리보다 훨씬 덜 일반적이라면 아마도 공통 유형과 가장 잘 일치하는 두 토토 결과 만 생성 할 것입니다.
문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면