전체 텍스트 검색 속도를 높이는 데 사용할 수 있는 두 가지 종류의 색인이 있습니다.진그리고GiST. 전체 텍스트 검색에 토토 베이가 필수는 아니지만 정기적으로 열을 검색하는 경우 일반적으로 토토 베이가 바람직합니다.
그러한 색인을 생성하려면 다음 중 하나를 수행하십시오:
GIN 색인은 선호되는 텍스트 검색 색인 유형입니다. 역색인으로서 각 단어(어휘소)에 대한 색인 항목과 일치하는 위치의 압축 목록이 포함되어 있습니다. 다중 단어 검색은 첫 번째 일치 항목을 찾은 다음 색인을 사용하여 추가 단어가 부족한 행을 제거할 수 있습니다. GIN 인덱스는 다음의 단어(어휘소)만 저장합니다.ts벡터값이 아니라 무게 라벨이 아닙니다. 따라서 가중치가 포함된 쿼리를 사용할 때는 테이블 행 재검사가 필요합니다.
GiST 인덱스는손실, 즉 인덱스가 잘못된 일치를 생성할 수 있으며 이러한 잘못된 일치를 제거하려면 실제 테이블 행을 확인해야 함을 의미합니다. (포스트그레SQL필요할 때 자동으로 이 작업을 수행합니다.) GiST 인덱스는 각 문서가 고정 길이 서명으로 인덱스에 표시되므로 손실이 있습니다. 바이트 단위의 서명 길이는 선택적 정수 매개변수의 값에 따라 결정됩니다.시글렌. 기본 서명 길이(언제시글렌지정되지 않음)은 124바이트이고 최대 서명 길이는 2024바이트입니다. 서명은 각 단어를 n비트 문자열의 단일 비트로 해싱하고 이러한 모든 비트를 함께 OR하여 n비트 문서 서명을 생성함으로써 생성됩니다. 두 단어가 동일한 비트 위치로 해시되면 잘못된 일치가 발생합니다. 쿼리의 모든 단어가 일치하는 경우(실제 또는 거짓) 일치 항목이 올바른지 확인하기 위해 테이블 행을 검색해야 합니다. 서명이 길수록 더 큰 인덱스를 사용하는 대신 더 정확한 검색이 가능해집니다(인덱스의 더 작은 부분과 더 적은 힙 페이지 검색).
GiST 색인이 포함될 수 있습니다. 즉, 다음을 사용하십시오.포함절. 포함된 열은 GiST 연산자 클래스 없이 데이터 유형을 가질 수 있습니다. 포함된 속성은 압축되지 않은 상태로 저장됩니다.
손실은 잘못된 일치로 판명되는 테이블 레코드의 불필요한 가져오기로 인해 성능 저하를 유발합니다. 테이블 레코드에 대한 무작위 액세스가 느리기 때문에 GiST 인덱스의 유용성이 제한됩니다. 잘못된 일치 가능성은 여러 요인, 특히 고유 단어 수에 따라 달라지므로 사전을 사용하여 이 수를 줄이는 것이 좋습니다.
참고하세요진색인 빌드 시간은 종종 증가하여 향상될 수 있습니다.maintenance_work_mem, 그동안GiST색인 빌드 시간은 해당 매개변수에 민감하지 않습니다.
큰 컬렉션의 분할과 GIN 및 GiST 색인의 적절한 사용으로 온라인 업데이트를 통해 매우 빠른 검색을 구현할 수 있습니다. 파티셔닝은 테이블 상속을 사용하거나 서버를 통해 문서를 배포하고 외부 검색 결과를 수집하여 데이터베이스 수준에서 수행할 수 있습니다.외부 데이터액세스. 후자는 순위 함수가 지역 정보만을 사용하기 때문에 가능합니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.