-1

我有一个报告 Web 应用程序,它根据在一系列嵌套 sql 视图(3 级深)中完成的聚合绘制信息。最后一个嵌套视图是从实体框架代码中的存储过程调用的。由于它难以获取数据并超时,因此性能损失已经开始产生影响:

在 Sql profiler 中有 360,000+ 读取和 CPU @ 28313。此外,我什至无法在 SQL 中打开第三级视图而不会超时。

第一个视图只是从几个表和聚合中收集数据。第二个对这些数据执行计算,例如日期差异、时区调整和平均值。第三个完成这些计算并提供所需数据的摘要。第三个视图是我查询的那个。

一般来说,解开嵌套视图的好策略是什么?具体来说,如果您有需要在 SQL Server 中完成的计算,但只能在将数据组合到某个级别后才能完成,那么有什么比嵌套视图更好的策略呢?

感谢您的任何帮助,您可以提供!

4

1 回答 1

1

您可以将任何视图作为子查询包含在内,但是,我怀疑它本身是否有助于在这种情况下提高性能。它将使您能够查看部分视图,并可能将任何共享部分放入表变量或临时表中。

如果您可以分享更多信息,那可能会有所帮助。

我劝告你:

  1. 内联这些视图,所以你已经得到了一切
  2. 一点一点地削减它,看看(未编译的!!)性能问题在哪里。
  3. 修复性能问题
  4. 希望编译后性能问题在同一个地方。
于 2013-01-14T14:07:20.647 回答