Sql server mssql空间查询的性能较慢

Sql server mssql空间查询的性能较慢,sql-server,query-performance,point-clouds,spatial-query,spatial-index,Sql Server,Query Performance,Point Clouds,Spatial Query,Spatial Index,我有一个表dbo.ashfill_pointCloud,它由大约300万个几何点组成。然后我绘制多边形(矩形)并运行查询以查找位于该多边形内的所有点的z值的平均值 性能极其缓慢且不一致 查询: `select @averageZ = NULLIF( AVG(NULLIF(Ogc_geometry.Z,NULL)),NULL) FROM dbo.ashfill_pointCloud WITH (INDEX(si_geom_points))

我有一个表dbo.ashfill_pointCloud,它由大约300万个几何点组成。然后我绘制多边形(矩形)并运行查询以查找位于该多边形内的所有点的z值的平均值

性能极其缓慢且不一致

查询:

`select @averageZ = NULLIF( AVG(NULLIF(Ogc_geometry.Z,NULL)),NULL) 
                            FROM dbo.ashfill_pointCloud WITH (INDEX(si_geom_points)) 
                            WHERE Ogc_geometry.STWithin(@deltablock)=1 `
我在dbo.ashfill_pointCloud表上使用空间索引(si_geom_points),设置如下:

边界框:
X-min:12700
Y-min:-2940200
X最大值:13300
Y最大值:-2938800

概述:
镶嵌方案:几何网格
每个对象的单元格:16个

网格
级别1:中等
级别2:中等
第三级:中等
级别4:中等

指定边界框以包括dbo.ashfill_pointClouds表中的所有点。我还尝试了许多其他索引设置,例如不同的网格级别,每个对象有更多的单元格等,但都没有成功

对于某些区域,查询的执行速度似乎非常快,但对于其他区域,则非常慢(以小时为单位)。我还注意到,如果多边形内没有点,则会显著降低性能。我还尝试过使用其他方法,如STIntersects(),具有相同的性能


任何关于我可能做错什么的想法都将不胜感激。

为什么要使用索引提示?@CPMunich我想确保索引得到使用。我已经读过了自动估算的“估算成本计划”,但我试着用没有提示来看出差异,但几乎没有。如果没有区别,你应该考虑删除提示。如果索引发生更改或其他人决定删除索引,则查询可能会失败。查询是否在storec过程中?统计数字是最新的吗?也许可以尝试对查询速度较慢的区域进行过滤统计。