我们需要从 SQL Server 2005 数据库中提取大量数据以进行报告。我们的存储过程返回超过 15,000 行。
当我从应用程序(MVC 4.0)调用过程时,请求超时!!!(可能是因为数据量大)
使用 MVC 4.0 应用程序从 SQL Server 2005 数据库中读取如此庞大的数据是否有任何最佳实践?
我们需要从 SQL Server 2005 数据库中提取大量数据以进行报告。我们的存储过程返回超过 15,000 行。
当我从应用程序(MVC 4.0)调用过程时,请求超时!!!(可能是因为数据量大)
使用 MVC 4.0 应用程序从 SQL Server 2005 数据库中读取如此庞大的数据是否有任何最佳实践?
您看到超时是因为您的 SQL 查询需要很长时间才能完成。这不是因为结果的大小(15,000 条记录并不是一个庞大的数据量),而是因为查询运行效率低下。
也许你错过了几个索引,也许存储过程写错了——从这里不可能知道。尝试优化您的查询或数据库(如果您有可用的 DBA,他们可以提供帮助。如果没有,Management Studio 可以为您提供一些提示)。
如果您无法优化查询或数据库,那么您将不得不增加超时时间,正如其他人所建议的那样。
即使我面临同样的问题,但我即将呈现超过 1,48,000 条记录。所以解决这个问题的方法是使用多线程。您将拥有一种从数据库中获取数据的方法,在单独的线程中调用该特定方法。您的数据将在 5 秒内加载完毕。引入多线程只是为了处理大量数据而不会降低性能。
以下是一些关于如何使用它来优化它的提示:
优化查询 - 看看您是否可以以某种方式优化您的查询。将索引添加到您的表中,检查 where 语句等。如果没有查看查询和了解架构,我真的无法给您任何具体的建议。看看其他人已经就这个话题提出了什么建议。
限制存储过程返回的数据量——我的猜测是 MVC 应用程序并不真正需要所有 15k 行,而是更多。查看这篇文章:实现分页的有效方法。这不会加快查询速度,但会提高应用程序的效率。
第一个问题是您不在报告中使用数据集和数据源视图的原因(如果它在 SQL 服务器中报告)。
如果它不是 Reporting Services,而您只想使用 C# 代码,请尝试为其创建一些辅助函数。
在这里查看超时选项 http://forums.asp.net/t/1040377.aspx
还有这里用于优化代码和 SP 在此处输入链接描述