基数,MS-SQL 的并行提示替代方案

0 sql-server optimization parallelism cardinality-estimates query-performance

UPDATE MARK M SET ARCHIVE_FLAG = 'N' WHERE EXISTS 
(SELECT /*+ cardinality(S1, 10) parallel(S1,8)*/ 1 FROM SHFASG S, SHIFT S1 
WHERE S.ID = S1.ID AND M.ID = S.MARKID AND ARCHIVE_FLAG <> 'Y');
Run Code Online (Sandbox Code Playgroud)

这是我拥有的 oracle 查询,我想为我的 MS SQL DB 创建类似的查询,请提供任何帮助

AMt*_*two 5

只需删除 SQL Server 的提示。

cardinalityparallel提示,旨在帮助控制性能,当你“更好地了解”比DBMS -他们不以任何方式影响的结果。在运行查询之前,您无法知道是否会在 SQL Server 中获得可接受的性能。

不同的平台几乎肯定需要在不同的地方使用不同的工具进行调整。例如,并行性在 SQL Server 中的工作方式不同,因此相关查询调优的方法也不同。如果您确实需要控制并行性,则使用提示具有不同的语义并发生在不同的场景中。

因此,只需删除这些提示(或保留它们。SQL Server 只会将它们解释为注释),然后观察性能。

调整需要它的查询:首先确保有索引和统计信息,以便优化器拥有获得良好计划所需的数据,然后探索编写查询的替代方法,最后通过探索提示。