在Postgres中为特定查询设置work_mem

时间:2014-01-26 18:13:27

标签: java sql postgresql memory-management

我正在使用一个委托给PostgreSQL的JDBC驱动程序的库,有些查询非常复杂,需要更多内存。我不想将work_mem设置为所有查询的大值,只是这个子集。问题是执行以下代码会导致错误:

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

ResultSet rs = DatabaseDriver.execute(sql);

当我运行这个时,我收到一个错误:

set work_mem = 102400;

不会返回任何结果。

这适用于pgAdmin,因为您可以一次执行多个查询。有没有更好的方法来执行此操作,还是需要执行任意SQL然后提取我想要的结果集?

2 个答案:

答案 0 :(得分:4)

我不知道DatabaseDriver做了什么,但是对于“普通”JDBC,您只需要执行以下操作:

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

答案 1 :(得分:0)

尝试使用Batch Processing

执行此操作