2011-03-09 2 views
0

저는 Postgres 8.4를 사용 중이며 ILIKE를 사용하여 검색을 수행하고 있습니다. 그 테이블에서 4 열 (텍스트 포함)을 찾고 있기 때문에 모든 열에 대해 하나의 인덱스를 만들고 각 열에 대한 인덱스가 아닌지 궁금합니다.Postgres 테이블 인덱스에 여러 필드 포함하기

감사합니다.

답변

1

이것은 다소 복잡한 주제입니다. 일반적으로 데이터베이스는 처음에 고정되어 있지 않으면 LIKE 쿼리를 최적화하지 않습니다. 4 열을 가로 질러 검색하는 경우 LIKEly가 아닙니다.

http://www.postgresql.org/docs/8.4/static/indexes-types.html

패턴이 일정하고 의 시작 부분에 고정 경우, 최적화도 좋아하고 연산자를 일치 패턴 ~ 을 포함하는 조회를위한 B-트리 인덱스를 사용할 수 있습니다 문자열 - 예 : col LIKE 'foo %' 또는 col ~ '^ foo', 그러나 col LIKE는 '% bar'입니다. 그러나 데이터베이스에 이 C 로켈을 사용하지 않는 경우 연산자 클래스가있는 인덱스를 만들어 패턴 일치 쿼리의 인덱싱을 지원해야합니다. 아래의 섹션 11.9를 참조하십시오. 패턴이 알파벳이 아닌 문자로 시작하는 경우에만 문자 (대소 문자 변환 )의 영향을받지 않는 경우에만 ILIKE 및 ~ *에 B- 트리 색인을 사용할 수도 있습니다 (예 : ).

당신은 당신이 (검색 엔진처럼) 자연 언어 질의를하고 있다면 ...

+0

을 PostgreSQL의에서 전체 텍스트 지원을 고려 또는 LIKE와 ILIKE에 대한 인덱스를 사용할 수 있습니다에 대 한 9.1을 기다릴 수 : http://www.depesz.com/index.php/2011/02/19/waiting-for-9-1-first-likeilike/ –

관련 문제