【发布时间】:2011-05-28 05:35:39
【问题描述】:
我想执行一个选择查询并能够获得结果的计数,而不像 TOAD 那样使用“COUNT(*)”。这个概念是让用户可以选择输入他想要的任何“选择查询”并为他计算结果的数量。
try {
selectStatement = globalConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet selectResultSet = selectStatement.executeQuery(selectStatementString);
selectResultSet.last();
int countOfResults = selectResultSet.getRow();
writeInLabel(kllStatusLabel, "Count Finished: Found " + countOfResults + " Inserts");
} catch (SQLException ex) {
writeInLabel(kllStatusLabel, "Error executing select query.");
}
这段代码延迟了很多行:“selectResultSet.last();”。 TOAD 以更少的延迟做到这一点。 (右键单击-> 记录计数)。 即使我在 TOAD 中一直向下滚动结果表,它也会更快。
TOAD 如何获取记录数?
好的,我知道了,我将使用 count(*) 并使用第二个 ResultSet 来显示我的结果。
ResultSet selectResultSet = selectStatement.executeQuery("select count(*) from (" + selectStatementString + ")");
int countOfResults = 0;
if (selectResultSet.next()){
countOfResults = selectResultSet.getInt(1);
}
【问题讨论】:
-
您是否考虑过 TOAD 进行顺序选择,即获取前 500 条记录并显示它们,您可以浏览时,它仍在寻找更多数据?换句话说,您是否认为 TOAD 是多线程的,除非另有说明,否则我在您的代码中看不到任何多线程?
-
我不是在谈论结果,只是在计算结果。这就是我想说的。在 TOAD 中,即使是简单的记录计数也很快。抱歉,我没有提供所有代码。我在我的代码中使用线程。
标签: java select count performance toad