0

我想查詢geopoints的近鄰,不管我使用空間索引或沒有,我總是相似的時間,大約需要6秒。我怎樣才能加快這個查詢?SQL Server空間索引近鄰

這裏是我的查詢:

Declare @param nvarchar(50); 
set @param = 'POINT(32.489491 37.864724)' 

Declare @paramGeom geometry = geometry::STPointFromText(@param, 4326); 
Select top 1 MI_PRINX, MI_STYLE, TrafikIsigi, Demiryolu, UlkeSinir, ID, SP_GEOMETRY.STX AS Longitude, SP_GEOMETRY.STY AS Latitude, SP_GEOMETRY AS Geometry FROM dbo.NODE (nolock) 
WHERE NODE.SP_GEOMETRY.STDistance(@paramGeom) < 0.1 
ORDER BY NODE.SP_GEOMETRY.STDistance(@paramGeom); 

這裏是我的指數:

CREATE SPATIAL INDEX [IX_Spatial] ON [dbo].[NODE] 
(
    [SP_GEOMETRY] 
)USING GEOMETRY_GRID 
WITH (
BOUNDING_BOX =(25, 35, 46, 43), GRIDS =(LEVEL_1 = HIGH,LEVEL_2 = MEDIUM,LEVEL_3 = MEDIUM,LEVEL_4 = MEDIUM), 
CELLS_PER_OBJECT = 64, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
GO 

任何幫助將不勝感激。

編輯/解決方案:

我改變了我的查詢是這樣的:

Declare @param nvarchar(50); 
set @param = 'POINT(32.489491 37.864724)' 

Declare @paramGeom geometry = geometry::STPointFromText(@param, 4326); 

Select top 1 MI_PRINX, MI_STYLE, TrafikIsigi, Demiryolu, UlkeSinir, ID, SP_GEOMETRY.STX AS Longitude, SP_GEOMETRY.STY AS Latitude, SP_GEOMETRY AS Geometry FROM [dbo].[NODE] n WITH (INDEX(IX_Spatial)) 
WHERE n.SP_GEOMETRY.STDistance(@paramGeom) < 0.1 
ORDER BY n.SP_GEOMETRY.STDistance(@paramGeom); 
+0

我認爲這個問題更適合gis.stackexchange.com。你的問題很混亂。無法理解你想要什麼。 – Divi 2012-08-14 10:52:37

+0

我需要加快我的查詢。這個查詢在2M節點中大約需要6秒鐘。 – 2012-08-14 10:54:11

+0

試試這個http://stackoverflow.com/questions/3350965/how-can-i-speed-up-this-sql-server-spatial-query,它似乎可能是一個類似的問題,也許它不使用空間索引。 – Divi 2012-08-14 10:57:54

回答

0

嘗試this,好像它可能是一個類似的問題,也許它不使用空間索引。 -