查询优化器不再将查询视为并行运行

时间:2019-05-22 17:54:34

标签: sql-server

我遇到了一个大型SQL查询问题,该查询曾经在几个月前表现出色(用于在2-3分钟内获取结果),但现在已停止表现不佳(几乎像30分钟一样)。 通过进一步分析,我意识到这是因为它已经停止生成可以并行运行的执行计划,现在不得不对其进行串行读取和插入。

我尝试了几件事,使我们的MAXDOP配置设置为0,并行化的成本阈值较低(为5 – 0范围),以尝试强制查询并行读取行,但是似乎没有任何效果。

另一个问题是我没有太多权限(通过添加提示或更改联接)来修改查询,因为查询是通过其他应用程序自动生成的。

但是,令我惊讶的是,如果我稍微修改一下查询,就像删除联合中使用的子查询之一/注释掉其中一个联接/ 不要在最后阶段让行插入到临时表中,查询会将执行计划改回并行收集流。

因此,基本上,我正在尝试解决以下问题:查询优化器为何以前曾将此查询视为并行流读取和插入,然后突然停止将其视为并行聚集流。

当然,数据量有所增加,但是需要了解让优化器使该查询再次并行运行的其他方法。

我是deep sql优化器的初学者,所以任何帮助将不胜感激。

0 个答案:

没有答案