4

我尝试限制结果集的大小,而不必更改应用程序中的每个 SQL 语句(至少例如)。因此,向每个查询添加ROWNUM子句不是一种选择。

我或多或少地在寻找一些全局参数,或者至少是一个会话参数(如SET ROWCOUNT在 SQLServer 中)。

该应用程序使用 JDBC 资源池连接到 Oracle,因此我可以在 SQL 初始化 JDBC 池中设置会话范围的参数。

4

2 回答 2

3

您是否尝试过使用Statement.setMaxRows 方法?这是一种标准的 JDBC 方法,它会在获取指定的最大数量后静默删除行。

但是,从性能的角度来看,实际修改发送到数据库的查询可能会更好地为您服务。如果您按照@MK 的建议进行操作,您将告诉优化器您只会获取 N 行。这可能允许优化器选择更有效的计划。

于 2012-06-19T19:20:36.543 回答
2

我怀疑没有办法做到这一点。您可以创建一个 AOP 建议,该建议将通过将查询包装为来修改每个 executeQuery() 调用

"select * from ( " + origQuery + " ) where ROWNUM <= 5"

但我希望这是我们正在谈论的临时或测试的事情。

于 2012-06-19T18:32:38.147 回答