문제

내가 찾을 수 있는 정보에 따르면 둘 다 동일한 문제, 즉 배열 포함 및 교차(&&, @>, <@ 등)와 같은 보다 난해한 작업을 해결합니다.그러나 언제 둘 중 하나를 사용해야 하는지(또는 둘 다 사용하지 않아도 됨)에 대한 조언에 관심이 있습니다.
그만큼 PostgreSQL 문서 이에 대한 정보가 있습니다.

  • GIN 인덱스 조회는 GiST보다 약 3배 빠릅니다.
  • GIN 인덱스는 GiST보다 구축하는 데 약 3배 더 오래 걸립니다.
  • GIN 인덱스는 GiST보다 업데이트 속도가 약 10배 느립니다.
  • GIN 인덱스는 GiST보다 2~3배 더 큽니다.

그러나 메모리 대 인덱스 크기 비율이 작아지기 시작할 때(예:인덱스 크기가 사용 가능한 메모리보다 훨씬 커집니다.)나는 #postgresql IRC 채널에서 GIN이 모든 인덱스를 메모리에 유지해야 한다는 말을 들었습니다. 그렇지 않으면 B-Tree와 달리 디스크에서 어떤 부분을 읽어야 할지 모르기 때문에 효과적이지 않습니다. 특정 쿼리?질문은 다음과 같습니다.이것이 사실입니까(나도 이것과 반대되는 말을 들었기 때문입니다)?GiST에도 동일한 제한 사항이 있나요?이러한 인덱싱 알고리즘 중 하나를 사용하는 동안 알아야 할 다른 제한 사항이 있습니까?

도움이 되었습니까?

해결책

우선 텍스트 검색 색인 생성에 사용해야합니까?GIN과 GiST는 일부 데이터 유형에 특화된 인덱스입니다.간단한 문자 또는 정수 값을 색인화해야 하는 경우 일반 B-트리 색인이 가장 좋습니다.
어쨌든 PostgreSQL 문서에는 다음과 같은 장이 있습니다. 요점 그리고 하나에 , 에서 자세한 정보를 확인할 수 있습니다.
그리고 마지막으로 어떤 것이 가장 좋은지 찾는 가장 좋은 방법은 샘플 데이터를 생성하고(실제 시나리오에 필요한 만큼) GIST 인덱스를 생성하여 인덱스 생성에 얼마나 많은 시간이 필요한지 측정하는 것입니다. 새 값을 삽입하고 샘플 쿼리를 실행하세요.그런 다음 인덱스를 삭제하고 GIN 인덱스로 동일한 작업을 수행합니다.값을 비교하면 데이터를 기반으로 필요한 답을 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top