Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JqGrid中显示百万条记录_Jqgrid - Fatal编程技术网

在JqGrid中显示百万条记录

在JqGrid中显示百万条记录,jqgrid,Jqgrid,我有一个网站,我必须从数据库中获取一百万条记录,并在JqGrid中显示。但当我这样做时,获取和显示记录大约需要45到60分钟 我将JqGrid与JSP、Hibernate、JPA和MySQL数据库一起使用 谁能告诉我怎么做?这样可以减少时间延迟,更快地加载记录 提前谢谢 @更新 我尝试使用JSON而不是XML,时间缩短到了30分钟。在这30分钟内,从数据库获取数据需要16分钟,将数据传递到前端需要14分钟 @更新2 有几种方法可以减少将数据加载到jqgrid所需的时间 方法1:我的查询中有ORD

我有一个网站,我必须从数据库中获取一百万条记录,并在JqGrid中显示。但当我这样做时,获取和显示记录大约需要45到60分钟

我将JqGrid与JSP、Hibernate、JPA和MySQL数据库一起使用

谁能告诉我怎么做?这样可以减少时间延迟,更快地加载记录

提前谢谢

@更新

我尝试使用JSON而不是XML,时间缩短到了30分钟。在这30分钟内,从数据库获取数据需要16分钟,将数据传递到前端需要14分钟

@更新2

有几种方法可以减少将数据加载到jqgrid所需的时间

方法1:我的查询中有ORDERBY子句,我删除了它,时间从45-60分钟减少到了5分钟

方法2:删除/减少查询中的联接数

方法3:不要直接使用Hibernate或JPA对象,而是在结果集中获取查询结果,并使用该结果集创建json对象


通过使用1和3种方式,我将加载200000条记录的时间缩短为1分钟32秒。

通常,您不需要同时显示数百万条记录。那将是一件疯狂的事情,完全不切实际。您需要的是实现分页。服务器端分页。因此,您只能获取当前可以在屏幕上显示的记录。每次显示10-30条记录似乎是一个合理的数量。在数据库级别执行分页非常重要,以避免获取数百万条记录,而只显示很少的记录。

我同意这一点。但我想再加上45到60分钟?!?听起来很疯狂。我会尝试确定,这其中有多少时间在数据库上等待,有多少时间在等待下载,有多少时间在解析。如果您的数据库占用了大量的时间,您可能需要对其进行优化。@dnuttle,IMHO通过HTTP协议将大量的数据传输到客户端,最重要的是在浏览器中构建包含如此多元素的DOM树,这可能需要最长的时间。向任何非机器人的用户显示一百万行绝对是不切实际的。如果您确实想显示“所有”行,您可以通过在jqGrid设置中将rownum设置为100并将滚动属性设置为1来伪造用户。这看起来像是加载了所有行,但当用户向下滚动时,每次自动加载100行。