小编Kra*_*ter的帖子

SQL Server 语句在 Oracle 中即时运行时需要永远

请帮我解释这个声明和计划:

https://www.brentozar.com/pastetheplan/?id=Bysy6YtEV

我们从 Oracle 迁移到 SQL Server,我们有一些非常奇怪的行为。它可能与迁移过程中的问题有关。

我发现很难解释执行计划。两种环境都应该具有相同的结构和索引。统计数据应该是最新的。SQL Server 中的设置:

  • 启用创建自动统计
  • 针对 Ad Hoc 查询进行优化 = true
  • 启用快照隔离
  • 最大平行 = 4
  • 阈值 50

DB 大小为 600 Gb,16 核,160 Gb 内存。

在此处输入图片说明

查询:

SELECT
    COUNT ( t_01.rsecondary_objectu ) AS selectExpr
FROM
    PIMANRELATION t_01 ,
    PITEM t_02 ,
    PITEMREVISION t_03
WHERE
    (   (   (   ( t_01.rprimary_objectu = t_02.puid )
            OR  ( t_01.rprimary_objectu = t_03.puid )
            )
       AND
            ( t_01.rrelation_typeu = 'w8INy241VJFL2B' )
        )
   AND  t_01.rsecondary_objectu = '2yLJkWqiVJFL2B'
    )
Run Code Online (Sandbox Code Playgroud)

甲骨文

在此处输入图片说明

我们发现问题是相关的,并且取决于数据。如果我选择一个不同的项目在 GUI 中复制(它实际上是一个复制的东西以及应用程序如何执行这些语句),它会立即工作。查询然后一旦工作正常看起来有点不同:https …

performance sql-server execution-plan sql-server-2014 query-performance

1
推荐指数
2
解决办法
763
查看次数