我正在使用一个委托给 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然后提取我想要的结果集?
RESET work_mem;
。我还建议在一开始使用SET LOCAL work_mem
,这样如果你忘记了执行RESET
,它最多只在事务范围内生效。 - Craig Ringer