2014-02-26 3 views
1

3M 행 테이블이 있습니다.쿼리 최적화 - PostgreSQL

모든 행을 검색하고 dc.js을 사용하여 시각화를 수행하려고했습니다.

문제점 한 개의 열만 있으면 약 70 초가 걸립니다.

그리고 내 쿼리를 작성하는 경우 해당 행을 검색하는 데 약 240 초가 걸립니다.

다음과 같은 열에서 select 쿼리를 사용하고 있습니다.

SELECT COL1, COL2 FROM TABLE 

그게 전부입니다. 그룹화, 아무 것도.

그러나 많은 시간이 필요합니다.

색인 생성에 대해 듣고 내가 사용한 열의 색인을 만들었습니다. 그러나 성과가 없지만.

+0

정확한 PostgreSQL 버전? '설명 (버퍼, 분석)'? –

+0

버전은'9.1'입니다. 그리고 완충 대가 무엇이고 분석할까요? 나는 이것에 아주 새롭다. – user3206082

+0

http://stackoverflow.com/tags/postgresql-performance/info, http://www.postgresql.org/docs/current/static/sql-explain.html –

답변

0

모든 쿼리에서 3M 행을 검색해서는 안됩니다. 3M 레코드를 보내는 데는 항상 많은 시간이 걸릴 것입니다 (데이터베이스와 관련이 없으며 전송 속도입니다). 그것은 당신의 입출력을 죽일 것입니다. 소요 된 시간은 request-originator와 postgres 데이터베이스로부터의 전송 (IO)입니다.

요청을 클라이언트에 스트리밍되는 비동기 요청의 일괄 처리로 나누는 것을 고려하십시오. 이는 사용자 경험 향상을 위해 프론트 엔드 코드 (javascript)를 재구성하는 것을 의미합니다.

0

PostgreSQL을 사용하는 환경을 지정하지 않았습니다.

예를 들어, Node.js에서 pg-query-stream을 사용하여 데이터를 스트리밍하고 클라이언트 측에서 동시에 렌더링하므로 클라이언트가 쿼리를 기다릴 필요가 없습니다 완료하고 중간 결과를 볼 수 있습니다.

그러나 이것은 최상의 해결책이 아닐 수도 있습니다. 더 나은 솔루션은 데이터베이스 함수 내에 데이터 집계를 구현하여 더 작은 데이터 하위 집합을 제공하는 것입니다.