我使用空间索引,当我尝试执行WHERE语句时:

WHERE T.GEOMETRY.STIntersects(O.GEOMETRY) = 1 AND T.GEOMETRY.STTouches(O.GEOMETRY) = 0

它工作正常,但是当我尝试使用OR执行时:
WHERE T.GEOMETRY.STOverlaps(O.GEOMETRY) = 1 OR T.GEOMETRY.STWithin(O.GEOMETRY) = 1

我收到此错误:



有什么帮助,此语句有什么问题?

最佳答案

解决OR查询(通常是性能)问题的一种通用解决方案是将它们分开,然后在它们之间使用UNION ALL。通常,这可以在子查询或Common表表达式中完成。

如果您可以发布更多查询,最好发布相关的表模式,那么我可以使用更详细的答案来更新我的答案。

关于sql-server - 在SQL Server中使用空间索引时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11088775/

10-12 05:44