0

我们已将 SQL Server 从 2014 年升级到 2019 年。

在 2014 年,这个查询很好:

INSERT INTO [schx].[US_New]
SELECT *
FROM [schx].[US_New_Stg]
WHERE FormattedID NOT IN (SELECT FormattedID
                          FROM [schx].[DLT]
                          WHERE [Type] = 'Hierarchical Root'
                         );

升级时(没有代码更改只有 SQL Server 升级),查询杀死了它所属的进程,而不是运行 4 分钟,现在它持续了 8 小时,然后它会超时。

我们最终添加了这个:OPTION (USE HINT ( 'FORCE_LEGACY_CARDINALITY_ESTIMATION' ))到查询的末尾,然后事情又好了。

2个问题:

  1. 因为我们必须使用旧版 CE,这是否意味着新版 CE 不如旧版 CE 强大?
  2. 如果我们不是在WHERE子句中使用子查询,而是将两者都左连接并选择了 NOT NULL,那会消除使用 Legacy CE 的需要吗?

谢谢!

4

0 回答 0