我有一个表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分钟:12700
Y-min:-2940200
X-max:13300
Y-max:-2938800
一般:
Tesselation Scheme:几何网格
每个对象的单元格:16
网格
等级1:中等
Level2:中等
Level3:中等
Level4:中等
指定边界框以包含dbo.ashfill_pointClouds表中的所有点。我还尝试了许多其他索引设置,例如不同的网格级别,每个对象的更多单元格等,没有运气。
对于某些区域,查询似乎执行速度极快,但对于其他区域而言极其缓慢(以小时为单位)。我也注意到如果多边形内没有点,它也会大大降低性能。我也尝试过使用其他方法,比如STIntersects(),具有相同的性能。
对于我可能做错的任何想法都将不胜感激。