我正在尝试使用JDBC编写一个数据库独立应用程序。我现在需要一种方法从某个表中获取前N个条目。我看到JDBC中有一个setMaxRows
方法,但我不习惯使用它,因为我害怕数据库将推出所有结果,只有JDBC驱动程序会减少结果。如果我需要排在十亿行的表中前5名的结果,这将打破我的脖子(该表有一个可用的索引)。JDBC setMaxRows数据库使用情况
编写特殊的SQL语句为每一种数据库是不是很漂亮,但会让数据库做聪明的查询计划,并停止获取超过必要的结果。
我可以依靠setMaxRows
告诉数据库到不行到多少?
我猜我不能依靠在希望的方式这个工作的最坏情况。我最感兴趣的是Postgres 9.1和Oracle 11.2,所以如果有人对这些数据库有经验,请继续前进。
好问题。 javadoc说:“设置由Statement对象生成的任何ResultSet对象可以包含的最大行数限制为给定数量,如果超出限制,超出的行将自动丢弃。”我读到它的方式意味着JDBC驱动程序可以完成这项工作。我怀疑它的JDBC实现依赖。 – 2012-04-16 14:05:41