0

我们希望在提供的范围内对所有日期的金额求和。

逻辑就像 - 在 while 循环中,我们将日期范围的金额列的总和添加到另一个变量中

这需要 1-3 分钟才能执行,具体取决于日期范围。

正因为如此,我们在代码端遇到了超时异常。

我们是否可以在存储过程中进行更改以减少时间,或者是否有任何其他方法可以在代码中处理此问题,以便不会引发异常。

请帮忙...

4

3 回答 3

3

调整查询性能的各种方法包括:

  • 重写您的查询

没有一种方法可以编写查询。如果您发现使用 OUTER JOIN 的查询需要很长时间,请使用 INNER JOIN 重写它。或者,WHERE 子句的编写方式可能会导致过多的数据库读取操作。

  • 规范化或去规范化表

虽然规范化表会产生理想的数据库设计,但它通常会导致查询不佳。如果您发现经常使用的查询必须跨越太多规范化表,请考虑一些数据重复。

  • 添加索引

缺乏明确定义的索引是查询需要很长时间才能执行的常见原因。创建索引将导致查询查找索引而不是表。

  • 删除索引。在某些情况下,导致查询执行缓慢的原因是定义不明确的索引。例如,不包含表中经常查找的列的索引。在这种情况下,最好删除索引并重新创建它。

从在存储过程中激活查询执行时间开始,看看什么需要时间

SET STATISTICS TIME ON 选择 * from ......

您还可以通过以下方式查看查询的图形执行计划: 单击查询 > 包括实际执行计划。

您可以阅读更多关于查询性能调优的信息:Pinal Dave 的博客,在这方面他是最好的。

于 2012-08-31T07:47:56.733 回答
0

正确的方法是优化你的程序,但由于你没有发布代码,我不能说什么,另一种方法是处理症状,因此通过增加 Connectionstring 中的 Timeout 不会引发异常,例如:

"CommandTimeout = try any greater value;"
于 2012-08-31T07:42:13.330 回答
0

如果您的查询确实需要该时间量,您可以通过将 SqlCommand 的CommandTimeout 属性设置为适当的值来防止超时。

但首先检查查询是否可以优化。

于 2012-08-31T08:53:58.163 回答