微调地理空间索引

时间:2012-06-26 16:25:08

标签: sql-server-2008 geospatial geography

我刚刚将我的SQL Server 2008数据库从使用纬度/经度对转换为使用新的地理类型。我使用STDistance函数对距离地理位置30英里的企业运行查询::如下所示:

WHERE this_.GeoLocation.STDistance(geography::Point(42.738963, -84.5522, 4326)) <= 48280.32

以下是我在地理列上的索引:

CREATE SPATIAL INDEX IDX_Business_GeoLocation
  ON Business (GeoLocation)
  USING GEOGRAPHY_GRID
  WITH (
    GRIDS = (
      LEVEL_1 = LOW, 
      LEVEL_2 = LOW, 
      LEVEL_3 = LOW, 
      LEVEL_4 = LOW),
    CELLS_PER_OBJECT = 64
  )

我真的不明白网格级别或每个对象的单元格是什么意思,但我正在寻找的是我的场景的最佳设置,我正在搜索距离点30英里范围内的商家(纬度/经度)。

任何提示?

1 个答案:

答案 0 :(得分:2)

这是一个鲜为人知的秘密(至少在我发现它之前它就是我!)

EXEC sp_help_spatial_geography_index
@tabname = '[TABLE_NAME]',
@indexname = '[SPATIAL_INDEX_NAME]',
@verboseoutput = 1,
@query_sample = 'POLYGON((xy,xy,xy,xy))'

填写明显的位,并将@verboseoutput保留到1。它让您了解主要和内部过滤器的效率(当然,越高越好)。有关空间索引的快速概述,包括网格和单元格等同于尝试here

另外,我发现this视频非常有趣。