编辑:示例很糟糕,导致与问题无关的答案。 给定一个大的选择查询,在一个简单的程序中,如:
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet srs = stmt.executeQuery(
"SELECT AGE FROM USERS");
while (srs.next()) {
ageStdDevAccumulator += Math.Pow(averageAge - srs.getInt("AGE"),2);
}
int ageStdDev= Math.Sqrt(ageStdDevAccumulator / userCount);
据我所知,一旦运行了executeQuery,整个用户年龄列就会从数据库发送到程序。是对的吗?如果数据库中有太多用户,这是否会导致服务器上的内存溢出?如果是这样,那么可以将选择查询分解为更小的块?如果是这样,有可能让编译器自己解决这个问题吗?
谢谢, 数据库noob程序员。
答案 0 :(得分:6)
如果我要计算用户的平均值,我会做以下简单查询
从用户中选择AVG(年龄)