我正在重构一些 Spring JDBC 代码,其中一些成本更高的查询执行“SELECT * FROM ...” - 并且即将开始检查实际需要哪些列,并且只是SELECT x , y FROM..它们。但是通过ResultSet类阅读似乎大多数数据都是延迟加载的。当您执行ResultSet.next()时,它会在数据库中移动光标(此应用程序中的 Oracle 10g),当您执行ResultSet.getXX()时,它会检索该列。所以我的想法是,如果你做一个“SELECT *”但只检索你想要的列,你并没有真正受到性能影响。我是否正确地考虑了这一点?我能想到的唯一伤害你的地方是数据库内部,因为它将查询结果存储在内存中并且必须使用更多内存,那么如果只选择几行,但如果它实际上只存储指向命中查询的列即使是这种情况也不会如此。
想法?
注意:这只适用于标准ResultSet,我知道CachedResultSet行为不同。