이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 12.9. 텍스트 검색을위한 우선 토토 사이트 추천 유형버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

12.9. 토토 베이 및 GIN Index 유형

전체 텍스트 검색 속도를 높이는 데 사용할 수있는 두 가지 종류의 인덱스가 있습니다. 인덱스는 전체 텍스트 검색에 필수적이지 않지만 열이 정기적으로 검색되는 경우 일반적으로 색인이 바람직합니다.

색인 생성이름on테이블토토 베이 사용 (컬럼);

토토 베이 (일반 검색 트리) 기반 인덱스를 만듭니다. 그만큼컬럼tsvector또는tsquery타입.

색인 생성이름on테이블gin 사용 (컬럼);

GIN (Generalized Index) 기반 인덱스를 만듭니다. 그만큼컬럼tsvector타입.

두 인덱스 유형 사이에는 실질적인 성능 차이가 있으므로 특성을 이해하는 것이 중요합니다.

토토 베이 지수는Lossy, 즉 인덱스가 허위 일치를 생성 할 수 있으며, 그러한 허위 일치를 제거하려면 실제 테이블 행을 확인해야합니다. (PostgreSQL필요할 때 자동으로이를 자동으로 수행합니다.) GIST 인덱스는 각 문서가 고정 길이 서명으로 인덱스에 표시되므로 손실됩니다. 시그니처는 각 단어를 N- 비트 문자열로 단일 비트로 해싱하여 생성되며,이 모든 비트는 N-BIT 문서 서명을 생성하기 위해 함께 또는 함께 함께 사용합니다.

손실은 거짓 일치로 판명되는 테이블 레코드의 불필요한 페치로 인해 성능 저하를 유발합니다. 테이블 레코드에 대한 임의의 액세스는 느리기 때문에 GIST 인덱스의 유용성을 제한합니다.

진 인덱스는 표준 쿼리의 경우 손실이 아니지만 성능은 고유 한 단어의 수에 따라 로그에 달려 있습니다. (그러나 Gin Indexes는의 단어 (lexemes) 만 저장합니다.tsvector값은 무게 라벨이 아닙니다. 따라서 가중치와 관련된 쿼리를 사용할 때 테이블 행이 다시 확인됩니다.)

사용할 인덱스 유형, GIST 또는 GIN을 선택할 때 이러한 성능 차이를 고려하십시오.

  • 진 인덱스 조회는 토토 베이보다 약 3 배 빠릅니다

  • 진 인덱스는 토토 베이보다 빌드하는 데 약 3 배 더 오래 걸립니다

  • 진 인덱스는 GIST 인덱스보다 업데이트가 적당히 느려지지만 빠른 업데이트 지원이 비활성화되면 약 10 배 느려집니다 (참조섹션 58.4.1자세한 내용)

  • 진 인덱스는 토토 베이 인덱스보다 2-3 배 더 큽니다

경험상인덱스는 조회가 더 빠르기 때문에 정적 데이터에 가장 적합합니다. 동적 데이터의 경우 토토 베이 인덱스가 더 빠릅니다.토토 베이인덱스는 동적 데이터에 매우 좋습니다. 고유 한 단어 (lexemes)의 수가 100,000 미만인 경우 빠르게인덱스는 100,000+ lexemes를 더 잘 처리하지만 업데이트가 느리게 처리됩니다.

참고인덱스 빌드 시간을 종종 증가시켜 개선 할 수 있습니다maintenance_work_mem, while토토 베이인덱스 빌드 시간은 해당 매개 변수에 민감하지 않습니다.

대형 컬렉션의 파티셔닝 및 GIST 및 GIN 인덱스의 적절한 사용을 통해 온라인 업데이트로 매우 빠른 검색을 구현할 수 있습니다. 파티션은 테이블 상속을 사용하여 데이터베이스 수준에서 또는 서버를 통해 문서를 배포하고를 사용하여 검색 결과를 수집하여 수행 할 수 있습니다.dblink모듈. 순위 기능은 로컬 정보 만 사용하기 때문에 후자는 가능합니다.