2

我们需要从 SQL Server 2005 数据库中提取大量数据以进行报告。我们的存储过程返回超过 15,000 行。

当我从应用程序(MVC 4.0)调用过程时,请求超时!!!(可能是因为数据量大)

使用 MVC 4.0 应用程序从 SQL Server 2005 数据库中读取如此庞大的数据是否有任何最佳实践?

4

4 回答 4

3

您看到超时是因为您的 SQL 查询需要很长时间才能完成。这不是因为结果的大小(15,000 条记录并不是一个庞大的数据量),而是因为查询运行效率低下。

也许你错过了几个索引,也许存储过程写错了——从这里不可能知道。尝试优化您的查询或数据库(如果您有可用的 DBA,他们可以提供帮助。如果没有,Management Studio 可以为您提供一些提示)。

如果您无法优化查询或数据库,那么您将不得不增加超时时间,正如其他人所建议的那样。

于 2013-08-07T05:36:02.503 回答
1

即使我面临同样的问题,但我即将呈现超过 1,48,000 条记录。所以解决这个问题的方法是使用多线程。您将拥有一种从数据库中获取数据的方法,在单独的线程中调用该特定方法。您的数据将在 5 秒内加载完毕。引入多线程只是为了处理大量数据而不会降低性能。

于 2013-08-07T04:33:03.347 回答
0

以下是一些关于如何使用它来优化它的提示:

优化查询 - 看看您是否可以以某种方式优化您的查询。将索引添加到您的表中,检查 where 语句等。如果没有查看查询和了解架构,我真的无法给您任何具体的建议。看看其他人已经就这个话题提出了什么建议。

限制存储过程返回的数据量——我的猜测是 MVC 应用程序并不真正需要所有 15k 行,而是更多。查看这篇文章:实现分页的有效方法。这不会加快查询速度,但会提高应用程序的效率。

于 2013-08-07T07:59:27.477 回答
0

第一个问题是您不在报告中使用数据集和数据源视图的原因(如果它在 SQL 服务器中报告)。

如果它不是 Reporting Services,而您只想使用 C# 代码,请尝试为其创建一些辅助函数。

在这里查看超时选项 http://forums.asp.net/t/1040377.aspx

还有这里用于优化代码和 SP 在此处输入链接描述

于 2013-08-07T05:53:47.900 回答