Java 哪一个是数据库的性能?

Java 哪一个是数据库的性能?,java,database,Java,Database,在以下两种情况下,哪一种性能最好,例如: 第1版: int value1 = rs.getInt(1); String value2 = rs.getString(2); 第2版: int value1 = rs.getInt("VALUE1"); String value2 = rs.getString("VALUE2"); 哪一个最好用?在许多地方,我添加了类似步骤1的代码。我想知道它是否真的有意义。如文中所述,这取决于JDBC驱动程序如何实现ResultSet接口。例如,实现了两个类

在以下两种情况下,哪一种性能最好,例如:

第1版:

int value1 = rs.getInt(1);
String value2 =  rs.getString(2);
第2版:

int value1 = rs.getInt("VALUE1");
String value2 = rs.getString("VALUE2");

哪一个最好用?在许多地方,我添加了类似步骤1的代码。我想知道它是否真的有意义。

如文中所述,这取决于JDBC驱动程序如何实现
ResultSet
接口。例如,实现了两个类似于的
getInt()
方法

public int getInt(int columnIndex) throws SQLException {
    ...
}

public int getInt(String columnName) throws SQLException {
    int idx = findColumn(columnName);
    return getInt(idx);
}
当然,
getInt(int)
getInt(String)
更快,因为
String
变量需要从列名到列索引的额外映射

这在实践中重要吗?很可能不是。如果不确定,创建测试数据并对其进行基准测试。其他因素,例如,将对您的整体绩效产生更大的影响


我总是更喜欢
getInt(String)
变量,因为它对修改
SELECT
语句(从投影中添加/删除列)更具鲁棒性。

Iirc,调用
rs.next()
时,您的
ResultSet
会在本地缓存下一行(很少?),因此,在性能上不应该有差异。顺便说一句:有趣的问题!1) 它将取决于数据库和JDBC驱动程序。2) 表现上的差异很可能很小,在99.5%的情况下都是无关紧要的。3) 如果你真的在意,就对它进行基准测试。在DB调用之后,关于如何读取结果的性能考虑是完全不相关的。过早优化?正如Stephen所说,这个问题几乎肯定与性能无关,尽管驱动程序起着至关重要的作用。可读性和可维护性有所不同。