2012-08-09 62 views
1

我在一个项目中从数据库中检索数据需要时间,因为记录数大于。 正在使用JPQL来查询数据库并将其显示在JQGRID中。在sqlserver中查询海量数据?

任何人都可以建议或指导我如何从数据库查询大量的数据,这需要更少的时间。

我很乐意提供任何形式的需要额外的信息

还请指导我,如果已经有一个解决方案....

谢谢....

+0

2000记录并不大。 20亿条记录是巨大的。 – Cosmin 2012-08-09 09:51:09

+0

是的,我明白了。但截至目前在测试环境下它的2000条记录。但将来它可能会上升到你的数量。如果查询2000条记录需要时间,那么请考虑使用分页检索20亿条记录 – Esh 2012-08-09 09:53:10

回答

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

+0

中只使用我查询中的连接来获取这些记录 – Esh 2012-08-09 13:49:40

0

你应该使用分页。有关示例,请参见jqGrid documentation(带MySql的PHP,但不应太难以适应Sql Server和JPQL)。

+0

需要多少时间。一切正常。但我想减少获得数据的时间量..现在它采取45 appro.sec获取2300+记录 – Esh 2012-08-09 09:48:11

+0

但是你显示每页2300条记录?你应该只显示几条记录(比如说20),然后从数据库 – 2012-08-09 10:25:09

1

,才能成功地告诉你如何解决你的问题,你需要来缩小问题发生。把你的查询生成你的结果集,并使用SSMS直接对数据库运行它,查看纯查询执行多长时间。如果它执行得非常快,那么你的问题在UI中。如果它本身在实际的数据库服务器性能中,那么您需要查看查询调优和优化以及潜在的索引。

有对后者的主题提供了许多文章,如下面的一个:

http://www.sql-server-performance.com/2004/query-tuning/