2017-05-11 11 views
0

PostgreSQL 9.5를 사용하고 있습니다. 나는 거의 20GB의 테이블을 가지고있다. 그것은 자동 증분 열 ID 칼럼에 기본 키를 가지고 있지만, 나는 타임 스탬프 인 다른 열에 내 쿼리를 실행하고 ... 타임 스탬프 열을 기준으로 선택/업데이트/삭제하려고하지만 쿼리가 매우 느립니다. 예 :이 테이블에서`timestamp_column :: date (current_date - INTERVAL '10 DAY ') :: date)가 15 분 이상 걸리는 곳을 선택하십시오. 어떤 종류의 색인을 추가해야합니까? 이 테이블 (필요한 경우)에서 더 빠르게 수행 할 수 있습니까?거대한 PostgreSQL 테이블 - 매우 느리게 선택하여 업데이트하십시오.

감사

당신은 당신의 절 식으로 인덱스를 생성 할 수 있습니다
+2

는 PostgreSQL의 성능 태그의 [정보 링크 (http://stackoverflow.com/tags/postgresql-performance/info)하십시오. 질문을 수정하고 그 정보를 붙여 넣으십시오. –

+0

타임 스탬프 열에 대해 하나의 인덱스를 만들었습니까? –

+1

테이블 정의, 쿼리 및 설명을 보여줘야합니다. 지금은 적절한 표현식을 가진 인덱스가 없다면 where 절에 대한 타입 캐스트 또는 다른 데이터 변환을 피하도록 조언 해줄 것이다 :'timestamp_column :: date'. 다음과 같이 –

답변

0

: 당신이 timestamp with timezone을 사용하고 명심

CREATE INDEX ns_event_last_updated_idx ON ns_event (CAST(last_updated AT TIME ZONE 'UTC' AS DATE)); 

그러나, 현재까지 이러한 유형의 당신은 바람직하지 않은 효과를 얻을 수 있도록 할 수 있습니다 캐스트 .

또한, 모든 SQL에 캐스팅을 제거 :

select * from ns_event where Last_Updated < (current_date - INTERVAL '25 DAY'); 
+0

도움을 주셔서 감사합니다. –

+0

안녕하세요. . 내 대답을 수락 된 것으로 표시하는 것을 잊지 마십시오. 감사. –