2009-06-11 2 views
2

약 5 백만 개의 레코드가있는 Postgres 테이블이 있는데 입력 키와 가장 가까운 일치 항목을 찾고 싶습니다. 나는 trgram을 pg_trgm 모듈과 함께 사용하려고 시도했지만, 쿼리 당 약 5 초가 걸렸다. 이것은 나의 요구에 너무 느리다.pg_trgm보다 빨리 postgres 퍼지 일치가 있습니까?

Postgres에서 퍼지 매치를하는 더 빠른 방법이 있습니까?

+0

키는 어떻게 구성되어 있습니까? 영숫자? int 만? –

+0

색인은 text 유형의 속성으로 작성됩니다. –

+0

쿼리의 "explain analyze"결과를 보여주십시오. – Tometzky

답변

0

Soundex은 대체 퍼지 일치이지만, 매우 퍼지 일 수 있습니다. 나는 당신이 할 수있는 경우에, 일치하는 삼지창을 고수 할 것입니다. 좀 더 적은 수의 결과로 트라이 그램 검색 작업을 수행 할 수있는 또 다른 기준이 있습니까?

1

설명 출력의 결과 크기 추정치가 떨어진 것처럼 보입니다. 전체 텍스트 검색 결과를 잘 예측하기가 어렵 기 때문에 예상치 못한 결과가 아닙니다.

이렇게하면 PostgreSQL에서 잘못된 쿼리 계획을 사용하게됩니다. 비트 맵 검사를 비활성화하고 (enable_bitmapscan = off로 설정) 다시 시도하십시오.

0

찾고있는 항목에 따라 Postgres는 표준 "like"구문 대신 정규식에서 일치하는 항목을 사용할 수도 있습니다. 그것은 당신에게 더 적합 할 수 있습니다.