Sql 其他表中不存在的不同几何图形

Sql 其他表中不存在的不同几何图形,sql,sql-server,Sql,Sql Server,我正在使用Sql Server 2012 我正在尝试做一些类似的事情 SELECT T1.* FROM (SELECT DISTINCT COMMUNITY FROM [TTDS].[dbo].[EXPORT_OUTPUT] WHERE COMMUNITY <> '') T1 LEFT JOIN (SELECT City FROM [TTDS].[dbo].[CITY]) T2 ON (T1.COMMUNITY = T2.City) WHERE T2.City IS NULL

我正在使用Sql Server 2012

我正在尝试做一些类似的事情

SELECT T1.*
FROM (SELECT DISTINCT COMMUNITY FROM [TTDS].[dbo].[EXPORT_OUTPUT] WHERE COMMUNITY <> '') T1
    LEFT JOIN (SELECT City FROM [TTDS].[dbo].[CITY]) T2 ON (T1.COMMUNITY = T2.City)
WHERE T2.City IS NULL 
T1是具有不同于EXPORT_输出的几何图形的表格


有什么更有效的方法可以做到这一点呢?

您的问题是尝试使用函数STEquals按几何体联接表,因为比较需要时间,特别是在没有索引的情况下

对于设计数据库可能更有意义

使用字段geometry\u id+geom创建表格geometry\u对象


在这种情况下,您只需将几何体同时放置在comunity和city上

为什么要将形状放置在varbinary上,然后再放置在几何体上?为什么两个并集部分看起来是相同的选择?您不能直接比较几何体。我看到了另一个这样的例子:建议将其转换为二进制,并对其自身进行联合,以在表中找到不同的几何体,但选择联合。两个选择是否都相同?在这种情况下,应选择不带并集的独立值。是的,这是为了获得唯一/独立值。您不能对几何体使用distinct。如果是这样的话,答案将是微不足道的,并且与varchar示例几乎相同。两个几何体字段上都有一个空间索引。我有一个表格几何体,它是我试图从中看到的LINKDIR几何体。我正在尝试将输出反规范化到LINKDIR_几何表中。您再次要求性能,并按照我的建议拆分该表,这将大大提高搜索效率。因为您将比较整数而不是几何数。此外,comunity和city表的大小将更小,因为int比geometry占用更少的字节。此外,如果更新几何图形,则只需更新几何图形表中的一行,而不必更新具有该几何图形的所有ComUnit和city行,社区和city甚至不涉及该问题。我正在对[EXPORT_OUTPUT]进行非规范化,方法是选择LINKDIR_几何图形中不存在的值并插入它们,我在示例中没有插入这些值,但这就是最终结果。我相信您建议将查找不同几何图形的中间步骤存储到索引表中,然后对其执行联接。在这种情况下,它仍然不会加入INT抱歉,我刚刚读了你的“例如”评论,如果你的查询与此无关,那么重写这个示例。如果事情不匹配,很难猜测你的查询在做什么
SELECT T1.*
FROM (

    SELECT cast(UNIQUE_GEOM as geometry) [geometry_field]
    FROM
    (
        Select cast(Shape as varbinary(max)) as UNIQUE_GEOM FROM [TTDS].[dbo].[EXPORT_OUTPUT]
        UNION
        SELECT cast(Shape as varbinary(max)) FROM [TTDS].[dbo].[EXPORT_OUTPUT]
    ) GET_UNIQUE_GEOM

) T1
    LEFT JOIN (SELECT [geometry] FROM [TTDS].[dbo].[LINKDIR_GEOMETRY]) T2 ON (T1.[geometry_field].STEquals(T2.[geometry]) = 1)
WHERE T2.[geometry] IS NULL