我正在一个项目中工作,因为记录数超过 2000 ,从数据库中检索数据需要时间。 使用 JPQL 查询数据库并将其显示在 JQGRID 中。
任何人都可以建议或指导我如何从数据库中查询大量数据,这需要更少的时间。
我很乐意提供所需的任何额外信息
如果已经有解决方案,请指导我....
谢谢....
答案 0 :(得分:2)
您需要做的第一件事是查询您的查询以查看您的时间花在哪里。 45阅读2000条记录似乎是一个疯狂的时间。在一个简单的桌面上,我可以在不到1秒的时间内读取超过10,000个简单对象。你的对象非常复杂吗?
您可能希望启用日志记录作为开始,可能是您花时间获取关系(n + 1问题)。
如果您使用的是EclipseLink,则可以启用PerformanceMonitor,它可以为您提供一个时间段转储信息。使用诸如JProfiler之类的Java分析器也会很好。
另见, http://java-persistence-performance.blogspot.com/2011/06/how-to-improve-jpa-performance-by-1825.html
答案 1 :(得分:1)
在我们成功告诉您如何解决问题之前,您需要缩小问题发生的位置。获取生成结果集的查询,并使用SSMS直接对数据库运行它,以查看纯查询执行的时间。如果它执行得非常快,那么您的问题就在UI中。如果它本身在实际的数据库服务器性能中,那么您需要查看查询调优和优化以及可能的索引。
关于后一主题,有很多文章可供选择,如下文所述:
答案 2 :(得分:0)
你应该使用分页。有关一些示例,请参阅jqGrid documentation(使用MySql的PHP,但是将其调整为Sql Server和JPQL应该不会太困难。)