2012-06-26 75 views
0

我剛剛使用lat/long對將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英里內的企業(拉特/長)。

任何提示?

回答

2

這是一個鮮爲人知的祕密(或者至少是我之前,我發現了它!)

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

填寫明顯的位,並保持到@verboseoutput1。它讓你瞭解主濾波器和內部濾波器的效率(當然越高越好)。有關空間索引的快速概述,包括什麼網格和單元格等同於嘗試here

此外,我發現this視頻很有趣。

相關問題