首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务器端对海量数据进行排序

服务器端对海量数据进行排序
EN

Stack Overflow用户
提问于 2013-10-29 15:00:11
回答 1查看 164关注 0票数 0

到目前为止,我们在Dojo datagrid上提供了客户端排序。现在我们需要增强服务器端排序,这意味着排序应该应用于网格上的所有页面。我们在主表上加入了4个表,到目前为止有2个lac记录,而且可能会增加。当执行SQL时,它需要5-8分钟的时间来获取所有记录到我的java代码,我需要在他们上应用一些计算,我提供了使用比较程序的自定义排序。我们有每个比较器来表示每一列。

我担心的是如何在短时间内将整个数据转换为服务层代码?有没有办法通过配置数据源来提高执行速度?

代码语言:javascript
复制
return new Comparator<QueryHS>() {

                public int compare(QueryHS object1, QueryHS object2) {
                    int tatAbs = object1.getTatNb().intValue() - object1.getExternalUnresolvedMins().intValue();
                    String negative = "";
                    if (tatAbs < 0) {
                        negative = "-";
                    }
                    String tatAbsStr = negative + FormatUtil.pad0(String.valueOf(Math.abs(tatAbs / 60)), 2) + ":"
                        + FormatUtil.pad0(String.valueOf(Math.abs(tatAbs % 60)), 2);
         //           object1.setTatNb(tatAbs);
                    object1.setAbsTat(tatAbsStr.trim());

                    int tatAbs2 = object2.getTatNb().intValue() - object2.getExternalUnresolvedMins().intValue();
                    negative = "";
                    if (tatAbs2 < 0) {
                        negative = "-";
                    }
                    String tatAbsStr2 = negative + FormatUtil.pad0(String.valueOf(Math.abs(tatAbs2 / 60)), 2) + ":"
                        + FormatUtil.pad0(String.valueOf(Math.abs(tatAbs2 % 60)), 2);

           //         object2.setTatNb(tatAbs2);
                    object2.setAbsTat(tatAbsStr2.trim());
                    if(tatAbs > tatAbs2)
                        return 1;
                    if(tatAbs < tatAbs2)
                        return -1;
                    return 0;
                }
            };
EN

回答 1

Stack Overflow用户

发布于 2013-10-30 18:35:36

您不应该将数据库中的所有2lac记录提取到您的应用程序中。您应该只获取所需的内容。

正如您所说的,您在主表上连接了4个表,您必须为它们提供Hibernate实体类以及它们之间的对应映射。使用分页技术仅获取您向用户显示的行数。Hibernate知道如何在您的特定数据库上高效地执行此操作。

您甚至可以在HQL中使用聚合函数:count(), min(), max(), sum(), and avg()来获取相关数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19651682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档