2012-01-19 2 views
7

나는 postgres의 초보자입니다. 약 2000 만 행이있는 테이블에 host (string varchar2)라는 열이 있습니다. 색인 생성을 사용하여 검색을 최적화하여 특정 호스트를 찾는 방법은 무엇입니까? 또한이 열은 매일 업데이트되어 특정 간격으로 트리거 색인을 작성해야합니까? 그렇다면 어떻게해야합니까?Postgres 색인 생성?

답변

7

당신이 정확히 일치하고있어 가정하면, 그냥 인덱스를 생성 할 수 있어야하고 그것을두고 (기록을 위해 나는 3 루비와 레일스를 사용하고 있습니다) :

CREATE INDEX host_index ON table_name (host) 

그냥 사용해야 쿼리 최적화 자동으로

사용할 데이터 정렬과 같은 다른 옵션을 지정할 수 있습니다.

자세한 내용은 PostgreSQL docs for CREATE INDEX을 참조하십시오.

+0

그래서 트리거를 작성할 필요가 없습니까? 레코드가 업데이트되면 인덱싱이 업데이트됩니까? –

+2

레코드가 업데이트되는 동안 인덱싱이 업데이트됩니다. 일반적으로 모든 색인은 검색 속도를 높이지만 정보 업데이트 속도는 느려집니다. 따라서 인덱스 구조를 선택하면 업데이트 성능에 큰 영향을 미칠 수 있습니다. – J0HN

0

기존의 btree 인덱스가 아닌 PostgreSQL 9.5에서 소개 된 이후로 BRIN Index을 사용하는 것이 좋습니다.

0

텍스트 검색의 경우 GIN 또는 GiST 인덱스 유형을 사용하는 것이 좋습니다.

https://www.postgresql.org/docs/9.5/static/textsearch-indexes.html

또 다른 가능성은 당신 만의 host 열에서 일치하는 정확한 수행 한 경우 즉, 더 불평등 비교 (>, <)과 관련된 부분 일치 (like, 와일드 카드), 당신은 host 변환을 고려하지 않을 수 있다는 것입니다 검색 속도를 크게 높이려면 해시 정수로 변환해야합니다.