使用索引与列名称提取数据的结果集的性能比较

时间:2012-12-31 16:51:49

标签: java resultset

当我使用索引来获取数据与列名称时,性能是否存在差异,而我正在谈论每天在服务器中执行此操作数百万次。

rs.getString(1) vs rs.getString("columnname");

编辑: JDBC版本 Oracle JDBC驱动程序 10.2.0.4.0

2 个答案:

答案 0 :(得分:11)

rs.getString(n);的执行速度会稍快,因为它直接从集合中检索,而不是搜索。

您的代码的数百名未来读者将会欣赏rs.getString("columnname");,而不必查找SQL以查看索引n所指的内容。

答案 1 :(得分:4)

这并不重要。对数据库的命中将比访问列值慢很多倍。

rs.getString(n)可以忽略不计。但是,它将取决于驱动程序实现和结果中的列数。大多数实现可能会使用HashMap将列名映射到索引,但不一定如此。此外,一些驱动程序可能会懒惰地构建HashMap,这意味着第一行将是列名称访问速度最慢的行。作为一个例子,JTDS对尚未在其HashMap中的列进行线性搜索。

编辑:小编辑并重新排列。没有内容改变。