解决方法
简而言之:
>空间索引与sql Server中的群集和非群集索引完全不同.
它们通过为空间查询提供“主要过滤器”来工作 – 空间索引使用网格来选择可能的候选结果的近似集合,但可能包括误报.
>次级过滤器然后消除假阳性以获得查询的真实结果集.
>获取快速执行空间查询的关键是创建一个准确(即很少的假阳性)但小(即不需要搜索的记录太多)的索引,以便大部分工作由主过滤器完成,不是更贵的二次过滤器.
>您可以使用sql Server Management Studio或使用CREATE INDEX T-sql语句在几何/地理数据列上创建空间索引.但是,该索引可能不总是在查询中自动使用.要检查是否正在使用空间索引,请查看“集群索引搜索(空间)”项目的查询执行计划.
>要确保使用空间索引来完成查询,您可以通过在SELECT语句中包含符合表名称的WITH(index(YourSpatialIndex))来添加明确的索引提示.
有几个特定于空间索引的设置可能会影响主要过滤器的性能.首先,我建议您遵守默认值,即所有四级网格的MEDIUM分辨率和每个对象的16个单元格.如果您使用几何数据类型,请确保设置包含整个数据集的BOUNDING_Box(对于地理位置,空间索引始终覆盖整个地球仪,因此这不是必需的).然后,尝试一次调整一个设置,并测量性能增加/减少.
< plug>在即将发布的“使用sql Server 2012的Pro Spatial”中插入空间索引并提高空间查询性能的章节< / plug> – http://www.amazon.com/Pro-Spatial-SQL-Server-2012/dp/1430234911/ref=sr_1_3?ie=UTF8&qid=1334310547&sr=8-3(完全免责声明 – 我是作者)