9

当我使用索引获取数据与列名时,性能会有所不同吗?我说的是每天在服务器中执行此操作数百万次。

rs.getString(1)对比rs.getString("columnname");

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

4

2 回答 2

11

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

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

于 2012-12-31T16:56:39.527 回答
4

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

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

编辑:小幅编辑和重新排列。没有内容变化。

于 2012-12-31T16:59:29.237 回答