微调地理空间索引(Fine-tuning a geospatial index)

2019-09-18 13:10发布

我刚刚从使用经/纬度对使用新的地理类型转换我的SQL Server 2008数据库。 我上的是地理学::点的30英里范围内,企业运行的查询,使用STDistance功能,就像这样:

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英里范围内,企业(LAT /最佳设置长)。

有小费吗?

Answer 1:

这是一个鲜为人知的秘密(或者至少是我之前,我发现了它!)

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

填写显而易见位,并保持@verboseoutput1 。 它给你的小学和内部过滤器的efficency(当然越高越好)的想法。 对于空间索引的快速概览,包括哪些网格和细胞等同于尝试在这里 。

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



文章来源: Fine-tuning a geospatial index