0

SQL Server 2008 データベースを、lat/long ペアの使用から新しい geography タイプの使用に変換しました。次のように、STDistance 関数を使用して、geography::Point から 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
  )

グリッド レベルまたはオブジェクトごとのセルが何を意味するのかよくわかりませんが、私が探しているのは、ポイント (緯度/長いです)。

任意のヒント?

4

1 に答える 1

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。これにより、一次フィルターと内部フィルターの効率がわかります (もちろん、高いほど良い)。グリッドとセルが何に相当するかなど、空間インデックス作成の概要については、こちらを参照してください

また、このビデオはかなり興味深いものでした。

于 2012-07-05T15:30:36.577 に答える