小编JNB*_*JNB的帖子

两台服务器,不同的执行计划。运行时间有几个数量级的差异

两台服务器,Development 和 Live。实时服务器是一个 Amazon RDS SQL Server Web 实例。两台服务器都具有相同的架构和数据。几何列上有一个很好的空间索引。在我的开发服务器上,查询在 < 30 毫秒内执行。在实时服务器上,查询需要 > 20 分钟。

检查执行计划表明它们完全不同。一方面,在我的开发环境中,查询是并行化的,而在实时服务器上则不是。

  • 我重建了索引并重新生成了统计信息。
  • 我无法解释巨大的差异。
  • 服务器的 DOP 相同。
  • 在执行查询期间,实时服务器的 CPU 受到 100% 的冲击。

如果您对原因或如何最好地诊断问题有任何见解,我将不胜感激。

DECLARE @geoBoundary geometry;
SET @geoBoundary = geometry::STGeomFromText('POLYGON((407439.5 108792.25, 408022.5 108792.25, 408022.5 108575.75, 407439.5 108575.75, 407439.5 108792.25))', '0');

SELECT
     ogr_geometry.ToString() AS strGeometry
    ,ogr_geometry
FROM inspire as geo
WHERE geo.ogr_fid IN
(
    SELECT
        geo.ogr_fid
    FROM .inspire as geo
    WHERE
    (
        (@geoBoundary.STContains(geo.ogr_geometry) = 1)
    )
    UNION
    SELECT
        geo.ogr_fid
    FROM .inspire as geo
    WHERE
    (
        (@geoBoundary.STOverlaps(geo.ogr_geometry) = …
Run Code Online (Sandbox Code Playgroud)

performance sql-server execution-plan spatial amazon-rds

7
推荐指数
1
解决办法
652
查看次数