将选择查询拆分成块的目的是什么?

时间:2010-10-05 23:22:30

标签: sql

编辑:示例很糟糕,导致与问题无关的答案。 给定一个大的选择查询,在一个简单的程序中,如:

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程序员。

1 个答案:

答案 0 :(得分:6)

如果我要计算用户的平均值,我会做以下简单查询

从用户中选择AVG(年龄)