Postgresql 9.2.24 문서 | ||||
---|---|---|---|---|
이전 | up | 12 장. 전체 텍스트 검색 | 토토 꽁 머니 : 문서 : 9.2 : PSQL 지원 |
속도를 높이는 데 사용할 수있는 두 가지 종류의 인덱스가 있습니다. 전문 검색. 인덱스는 전체적으로 필수가 아닙니다 텍스트 검색이지만 열이 검색되는 경우 정기적으로 인덱스는 일반적으로 바람직합니다.
색인 생성이름on테이블무지개 토토 사용 (열);
무지개 토토 (일반 검색 트리) 기반 인덱스를 만듭니다. 그만큼열tsvector또는tsquery타입.
색인 생성이름on테이블gin 사용 (열);
GIN (Generalized Berverted Index) 기반 인덱스를 만듭니다. 그만큼열TSVECTOR타입.
둘 사이에는 실질적인 성능 차이가 있습니다 색인 유형이므로 이해하는 것이 중요합니다 형질.
무지개 토토 지수는Lossy색인은 허위 일치를 생성 할 수 있으며 확인해야합니다. 그러한 허위 일치를 제거하기위한 실제 테이블 행. (postgresql필요할 때 자동으로.) GIST 인덱스는 각각 때문에 손실됩니다 문서는 고정 길이 서명으로 인덱스에 표시됩니다. 서명은 각 단어를 단일 비트로 해싱하여 생성됩니다. 이 모든 비트가 함께 또는 함께 생산하기 위해 N- 비트 문자열로 N- 비트 문서 서명. 두 단어가 같은 비트로 해시 될 때 위치에 거짓 일이있을 것입니다. 쿼리의 모든 단어가 있다면 일치하는 (실제 또는 거짓) 테이블 행을 검색해야합니다. 경기가 올바른지 확인하려면
손실은 불필요한 성능 저하를 유발합니다 테이블 레코드를 가져옵니다. 부터 테이블 레코드에 대한 임의의 액세스는 느리기 때문에 요점 지수의 유용성. 허위 일치의 가능성 몇 가지 요인, 특히 고유 한 수에 따라 다릅니다. 단어, 사전을 사용 하여이 숫자를 줄이는 것은 다음과 같습니다 추천.
진 인덱스는 표준 쿼리에 대한 손실이 아니지만 성능은 고유 한 수에 따라 로그에 달려 있습니다 단어. (그러나 Gin Indexes는의 단어 (lexemes) 만 저장합니다.TSVECTOR무게가 아닌 값 라벨. 따라서 쿼리를 사용할 때는 테이블 행을 다시 확인해야합니다. 무게가 포함됩니다.)
사용할 인덱스 유형을 선택할 때, GIST 또는 GIN을 고려하십시오. 이러한 성능 차이점 :
진 인덱스 조회는보다 약 3 배 빠릅니다 요점
진 인덱스는 빌드하는 데 약 3 배 더 걸립니다. 요점
진 인덱스는 GIST보다 업데이트가 적당히 느려집니다 빠른 업데이트 지원이면 인덱스이지만 약 10 배 느려 비활성화 ( 참조섹션 55.3.1자세한 내용)
진 인덱스는 무지개 토토보다 2-3 배 더 큽니다 인덱스
경험상진인덱스는 조회가 더 빠르기 때문에 정적 데이터에 가장 적합합니다. 을 위한 동적 데이터, 무지개 토토 인덱스는 업데이트가 더 빠릅니다. 구체적으로,무지개 토토인덱스는 매우 좋습니다 동적 데이터와 고유 한 단어 (lexemes)의 수가 100,000 미만,진인덱스는 100,000+ lexemes를 더 잘 처리하지만 속도가 느립니다. 업데이트.
참고진인덱스 빌드 시간을 증가시켜 종종 개선 될 수 있습니다Maintenance_Work_mem, 하는 동안무지개 토토인덱스 빌드 시간입니다 해당 매개 변수에 민감하지 않습니다.
큰 컬렉션의 파티셔닝 및 GIST의 적절한 사용 및 Gin Indexes는 매우 빠른 검색을 구현할 수 있습니다. 온라인 업데이트. 분할은 데이터베이스 수준에서 수행 할 수 있습니다 테이블 상속을 사용하거나 문서를 배포하여 서버 및를 사용하여 검색 결과 수집dblink모듈. 후자는 가능합니다 순위 기능은 로컬 정보 만 사용합니다.