Database 减少数据库I/O操作

Database 减少数据库I/O操作,database,Database,对于一个有n个用户的数据库,下面的代码会导致至少n次与该数据库的交互,这种想法正确吗 Statement stmt = con.createStatement(); ResultSet srs = stmt.executeQuery( "SELECT FAVOURITE_COLOR FROM USERS"); while (srs.next()) { //performSomeAction on srs.getString("FAVOURITE_COLOR"); } 在

对于一个有n个用户的数据库,下面的代码会导致至少n次与该数据库的交互,这种想法正确吗

Statement stmt = con.createStatement();
ResultSet srs = stmt.executeQuery(
    "SELECT FAVOURITE_COLOR FROM USERS");
while (srs.next()) {
        //performSomeAction on srs.getString("FAVOURITE_COLOR");
}
在与数据库的1 I/O交互中,是否也可以从所有用户中提取最喜欢的颜色?
如果是这样的话,如果用户太多,那么这可能会导致程序内存溢出吗?

为什么不能一次获取所有喜爱的颜色记录

ResultSet srs = stmt.executeQuery(
    "SELECT USERID, FAVOURITE_COLOR FROM USERS");

实际上,进一步考虑之后,这取决于您所谈论的平台和/或DBMS。您可能需要提供更多信息以获得明智的答案。有些平台会一次获取所有行并让您循环浏览,有些平台只会在您移动到行时拉取行。

为什么您不能一次获取所有喜爱的颜色记录

ResultSet srs = stmt.executeQuery(
    "SELECT USERID, FAVOURITE_COLOR FROM USERS");
实际上,进一步考虑之后,这取决于您所谈论的平台和/或DBMS。您可能需要提供更多信息以获得明智的答案。有些平台会一次获取所有行,并让您在其中循环,有些平台只会在您移动到行时提取行。

您的示例代码只对数据库进行一次往返

在一个简单的实现中,
executeQuery
将等待从数据库检索整个数据集。然后,对
next
的每次调用都将立即移动到下一行。

您的示例代码对数据库执行一次往返


在一个简单的实现中,
executeQuery
将等待从数据库检索整个数据集。然后,对
next
的每个调用都将立即移动到下一行。

因此,根据createStatement实现的不同,executeQuery调用可能会导致内存溢出。是否也有分析代码的方法,可以自动将查询分割成块?(为了清楚起见,查询总是在检索数据吗?或者你会称之为select查询吗?)我想你说的是特定于JAVA的,我的想法更一般。我不是JDBC或JAVA爱好者,您可能想用更多的语言/平台/数据库类型信息来标记您的问题,因此根据createStatement实现,executeQuery调用可能会导致内存溢出。是否也有分析代码的方法,可以自动将查询分割成块?(为了清楚起见,查询总是在检索数据吗?或者你会称之为select查询吗?)我想你说的是特定于JAVA的,我的想法更一般。我不是JDBC或JAVA的人,你可能想用更多的语言/平台/数据库类型信息来标记你的问题