Java 哪一个是数据库的性能?
在以下两种情况下,哪一种性能最好,例如: 第1版: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接口。例如,实现了两个类
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所说,这个问题几乎肯定与性能无关,尽管驱动程序起着至关重要的作用。可读性和可维护性有所不同。