MS SQL Server STIntersects或STIntersects太慢

时间:2016-12-28 20:02:16

标签: sql-server geography spatial-query

我正在查询一个带有LINESTRING地理列的表。我的查询基本上是这样的:

SELECT id FROM mytable 
WHERE geography::STPolyFromText('POLYGON((...coords for poly A...)),4326).STIntersects(geo) = 1 
OR geography::STPolyFromText('POLYGON((...coords for poly B...)),4326).STIntersects(geo) = 1

此查询会产生81条记录,需要16秒。

如果我把它分成两个单独的查询:

SELECT id FROM mytable 
WHERE geography::STPolyFromText('POLYGON((...coords for poly A...)),4326).STIntersects(geo) = 1 

SELECT id FROM mytable 
WHERE geography::STPolyFromText('POLYGON((...coords for poly B...)),4326).STIntersects(geo) = 1 

他们分别返回51和31条记录(共1条),几乎没有时间执行。

为什么OR如此缓慢?我是否必须使用多个查询和后期处理来实现一些基本的东西,或者我是否遗漏了一些明显的东西?

0 个答案:

没有答案