안녕하세요.
아래와 같은 쿼리로 데이터를 검색했을때 ORDER BY를 했을 경우 시간이 굉장히 오래 걸립니다.
SELECT write_time FROM tblSearchData1, to_tsquery( '가방' ) AS q WHERE ( ( title_vector @@ q ) OR ( content_vector @@ q ) ) ORDER BY write_time DESC LIMIT 10 OFFSET 0
to_tsquery()에 들어가는 단어에 따라 실행시간이 조금씩 틀리지만 대략 7~8초 정도 걸리는것 같습니다.
테이블의 데이터는 약800만건 이고 SELECT의 결과는 평균 4~5천건 정도입니다.
이 상태에서 ORDER BY 하지 않고 값을 가져오면 약 5~600ms 정도 걸립니다.
pg버전은 8.2.4이고 시스템 사양은 쿼드코어6600에 4기가 램 입니다.
현재 postgres의 시스템 설정은
shared_buffers = 2000MB
work_mem = 32MB
maintenance_work_mem = 64MB
와 같이 해놓았습니다.
ORDER BY 시에 속도를 향상 시킬 방법이 있으면 조언 부탁드립니다.
그럼 수고하세요.
|