我需要使用一些使用 OJDBC 的遗留代码。从 Web 进行查询并使用 servlet,我们必须搜索并显示最多 1000 行满足条件。因此,无论数据库中的实际行数如何,都会以特定的排序顺序返回最多 1000 行。这是通过在正在执行的语句上设置 fetchSize 来完成的。我读到 fetchSize 只是对 DB 的提示,它可能返回的行数也可能超过这些行数。这可能是我认为的原因,因为一旦计数超过 1000,在迭代结果集时会在遗留代码中使用中断。
现在需要更新此功能以进行分页。我知道按照AskTom 的文章中所述使用 ROWNUM 进行分页。
但作为这项活动的一部分,我还需要验证并证明性能没有受到影响。为此,我想知道当从 OJDBC 设置 fetchSize 并执行时,后端(Oracle)中实际发生了什么。是否可以将此 OJDBC 转换为可以直接运行以检查性能的精确查询?如果 fetchSize 不保证只返回指定的行数,它会返回所有满足条件的行吗?
谢谢您的帮助。