12

我想学习如何在 SQL SERVER 2012 中使用空间索引。我有一些非常耗时的查询,所以我需要它。

我将非常感谢一些示例和解释。

谢谢!

4

1 回答 1

15

不久前,我在 SQLBits 会议上介绍了一个会话,您可能会发现它对您有所帮助。您仍然可以在线观看视频和幻灯片:http: //sqlbits.com/Sessions/Event5/Creating_High_Performance_Spatial_Databases

简而言之:

  • 空间索引与 SQL Server 中的聚集索引和非聚集索引完全不同。
  • 它们通过为空间查询提供“主要过滤器”来工作——空间索引使用网格来选择可能的候选结果的近似集合,但其中可能包括误报。
  • 然后,辅助过滤器会消除误报,以获得查询的真实结果集。
  • 获得快速执行空间查询的关键是创建一个准确(即误报很少)但很小(即搜索的记录不多)的索引,以便大部分工作由主过滤器完成,而不是更昂贵的二级过滤器。
  • 您可以使用 SQL Server Management Studio 或使用 CREATE INDEX T-SQL 语句在几何/地理数据列上创建空间索引。但是,该索引可能并不总是在查询中自动使用。要检查是否正在使用空间索引,请查看聚簇索引查找(空间)项的查询执行计划。
  • 为了确保使用空间索引来完成查询,您可以通过在 SELECT 语句中的表名后面包含 WITH(index(YourSpatialIndex)) 来添加显式索引提示。

有几个特定于空间索引的设置会影响主过滤器的性能。首先,我建议您坚持默认设置,即所有四个网格级别的中等分辨率,每个对象 16 个单元格。如果您使用几何数据类型,请确保设置包含整个数据集的 BOUNDING_BOX(对于地理,空间索引始终覆盖整个地球,因此没有必要这样做)。然后,尝试一次调整一个设置并测量性能增加/减少。

<plug>在即将发布的“Pro Spatial with SQL Server 2012”中有专门的章节介绍空间索引和提高空间查询的性能</plug> - http://www.amazon.com/Pro-Spatial-SQL-Server- 2012/dp/1430234911/ref=sr_1_3?ie=UTF8&qid=1334310547&sr=8-3 (完全免责声明 - 我是作者)

于 2012-04-13T10:02:14.363 回答