2014-01-26 1 views
1

PostgreSQL 용 JDBC 드라이버에 위임 한 라이브러리를 사용하고 있으며 일부 쿼리는 매우 복잡하며 더 많은 메모리가 필요합니다. work_mem을 모든 검색어에 대해 큰 것으로 설정하고 싶지는 않지만이 하위 집합 만특정 쿼리에 대한 Postgres에서 work_mem 설정

set work_mem = 102400; 

결과를 반환하지 않습니다 :이 프로그램을 실행할 때

// pseudo-code for what is happening 
String sql = "set work_mem = 102400;"; 
sql += "SELECT * FROM expensive_query"; 

ResultSet rs = DatabaseDriver.execute(sql); 

나는 오류가 발생합니다 : 문제는 다음 코드를 실행하면 오류가 발생을 실행하는 것입니다.

pgAdmin에서 작동하는 이유는 여러 쿼리를 한 번에 실행할 수 있기 때문입니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 아니면 임의의 SQL을 실행하고 원하는 결과 집합을 추출해야합니까?

답변

2

를 사용하여 방금 다음을 수행 할 필요가해야 할 일 : work_mem를 재설정`

Statment stmt = connection.createStatement(); 
stmt.execute("set work_mem = 102400"); 
ResultSet rs = stmt.executeQuery("select ..."); 
+2

... 그리고; '이후. 또한'SET LOCAL work_mem'을 처음부터 권장합니다. 그런 식으로'RESET'을 잊어 버리면 트랜잭션 스코프가됩니다. –

+0

@CraigRinger : 좋은 지적, 고마워. –

0

시도 내가 DatabaseDriver,하지만 "일반"JDBC와 함께 무엇을 아무 생각 Batch Processing

관련 문제