即使使用Spatial Index,STcontains()查询也会运行缓慢

时间:2012-11-12 03:52:31

标签: sql sql-server sql-server-2008-r2 geospatial spatial

我有一个名为'Region'的表,它有2000条记录。在区域表中,我有1个称为点的几何列。现在我有另一个名为Bus_Route的表,其中几何列称为“几何”,有1000万条记录。现在我想要那个区域的点数。我使用以下查询通过使用STcontains来查看天气我的观点是否在该区域。但是这个查询需要很长时间(大约3天)。我在我的Bus_Route表上创建了空间索引,该表有1000万条记录,但也没有帮助。

         Select
              Region.BlockID,
              Bus_Route.geometry
              from 
              Bus_Route,                         
              Region
           where 

              Region.points.STContains(Bus_Route.geometry) = 1

请帮忙!

1 个答案:

答案 0 :(得分:2)

有几点意见:

  1. 因为你的公共汽车可能没有经过Flatland,所以请使用 地理而不是几何。
  2. 如果您要进行交叉加入 (正如你所说的那样,你的查询正在进行中) 做类似的事情:

    选择    Region.BlockID,    Bus_Route.geometry 来自Bus_Route
    交叉加入地区

  3. 您是否考虑过使用STIntersects代替STContains?如果我正确地解释您的问题,您正在寻找给定路线经过的区域,这意味着两个地理实例之间的交集将是非空的。您编写的查询将显示完全包含在区域内的路线。