所以我(仍然)经历了一些缓慢的遗留SQL视图,用于计算某些(有时)大型数据集上的平均值和标准偏差。我最终会加入意见加入意见等SQL查询,执行计划和“并行性”
所以我虽然我会审查我的查询执行计划。它立即建议缺少索引,然后我执行。但它仍然难以忍受(如此之慢,以至于VB6应用程序查询数据的时间太慢))
因此,在进一步研究执行计划时,我看到最多的成本(每个成本大约为8%)是“幻灯片”案件。主要是“分配流”和“重新分配流”。这些是什么?
所以我(仍然)经历了一些缓慢的遗留SQL视图,用于计算某些(有时)大型数据集上的平均值和标准偏差。我最终会加入意见加入意见等SQL查询,执行计划和“并行性”
所以我虽然我会审查我的查询执行计划。它立即建议缺少索引,然后我执行。但它仍然难以忍受(如此之慢,以至于VB6应用程序查询数据的时间太慢))
因此,在进一步研究执行计划时,我看到最多的成本(每个成本大约为8%)是“幻灯片”案件。主要是“分配流”和“重新分配流”。这些是什么?
Distribute Streams和Repartion Streams是当SQL优化器选择使用Parallel Query Processing时发生的操作。如果您怀疑这会导致查询出现问题,则可以强制SQL Server仅使用一个CPU,并使用MAXDOP query hint,如下所示。
select *
from sys.tables
option (maxdop 1)
我不知道。 。我只是看到这些操作在执行计划中花费最高...... – 2010-10-06 07:19:25
对,这就是为什么Joe说如果花费最大,请尝试使用maxdop 1并查看您的总体查询性能是否提高。 – 2010-10-18 01:45:12
几年前,我在一个类似的系统上工作,视图加入视图,随着系统中数据量的增加,性能最终变得不可接受。我发现从头开始重写查询以访问基表而不是查看,查询成本有了数量级的提高。您可能会发现,如果您查看相同基表被重复访问以执行不同聚合的计划。 [可能出现的低效率的例子](http://stackoverflow.com/questions/3222542/is-querying-on-views-slower-than-doing-one-query/3222905#3222905) – 2010-10-08 23:06:46