trigram 유사성 연산자 %를 사용하여 PostgreSQL에서 퍼지 일치 필터링 (WHERE 절에서)을 수행해야합니다. 필드 쌍을 비교할 때는 단순히 table1.field1 % table2.field2
이고 GIN 또는 GIST 인덱스는 성능을 크게 향상시키는 데 사용할 수 있습니다. 그러나 한 번에 여러 필드를 비교해야하며 최종 결론은 전반적인 유사성을 기반으로해야합니다.trigram 유사 연산자를 사용한 복수 열 유사성 비교 %
(COALESCE (l.field1, ' ')
|| ' ' || COALESCE (l.field2,' ')
|| ' ' || COALESCE (l.field3,' ')
|| ' ' || COALESCE (l.field4,' ')
) % (COALESCE (r.field1, ' ')
|| ' ' || COALESCE (r.field2,' ')
|| ' ' || COALESCE (r.field3,' ')
|| ' ' || COALESCE (r.field4,' '))
이 표현 그러나 개별 필드에 GIN 또는 GIST 인덱스를 활용할 수없고 성능이 떨어집니다 : 그 동안 나는 다음과 같이 연결된 표현을 사용할 수 있습니다. 물론 명백한 해결책은 두 테이블 모두에 새로운 연결 필드를 만들고 그 테이블에 GIN 인덱스를 만든 다음 연결된 필드를 비교하는 것입니다.
l.concatenated_field % r.concatenated_field
이 경우 GIN 또는 GIST 색인이 사용됩니다. 그러나 여러 가지 이유로이 솔루션에 만족스럽지 않고 trigram 연산자 (%)를 사용하여 다중 열 유사성 비교를 수행 할 수있는 대체 방법이 있는지 궁금합니다. 개별 필드 GIN 또는 GIST 인덱스가 활용 될 수 있을까요?
이러한 연결 문자열 표현식에 GIN 표현식 색인을 만들 수 있습니까? – zlatko