繁体   English   中英

比较多边形几何类型的最快方法

[英]Fastest way to compare polygon geometry types

我们有两个表,其中存储有多边形几何。 我想获取一个表中存在的多边形,而不是另一表中存在的多边形。.到目前为止,我正在执行左外部联接并使用STAsText(),但是这要花费很多时间。.仅供参考,我们有1.2亿个多边形在两个表中。 有没有一种快速的获取方法? (可能正在使用空间索引,我不知道这一点)。

仅供参考,我正在使用SQL Server 2012

应该这样做:

select a.*
from dbo.newPolygon as a
left join dbo.OldPolygon as b
   on a.Shape.STEquals(b.Shape) = 1
where b.ID is null

如果两个表的“形状”列上都有空间索引,则它应支持此查询。 从文档中:

在某些条件下,空间索引支持以下面向集合的几何方法:STContains(),STDistance(), STEquals() ,STIntersects(),STOverlaps(),STTouches()和STWithin()。 为了获得空间索引的支持,这些方法必须在查询的WHERE或JOIN ON子句中使用,并且必须在以下一般形式的谓词中出现:

几何1。 method_name(geometry2)comparison_operator valid_number

(强调我的)事实上,由于我们按照文档所述的指定方式使用STEquals(),因此我们应该很好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM