我正面臨一個可能有人遇到過的新開發中的低性能問題。有很多方法可以執行反向地理編碼過程。我有一個存儲過程來獲取反向地理編碼器。使用SQL Server進行反向地理編碼
問題是具有「路段(作爲地理位置)」的表是具有大約624801行的非常大的表格。
對於單個反向地理編碼器,它在臺式計算機上需要2秒,但是如果您記住我們有1000輛車輛每分鐘要求反向地理編碼服務,那意味着我必須提高服務質量性能。你能幫助減少查詢時間嗎?
在此先感謝
SELECT TOP 1 WITH TIES *, b.GEOGraphy.STDistance(@input) AS dist
FROM Numbers n
JOIN UK b WITH(INDEX(spatial_geography_index)) -- index hint
ON b.Geography.STDistance(@input) < @start*POWER(CAST(2 AS FLOAT),n.n)
AND b.Geography.STDistance(@input) >= CASE
WHEN n = 1 THEN
0
ELSE
@start*POWER(CAST(2 AS FLOAT),n.n-1)
END
WHERE n <= 10
ORDER BY n )
SELECT TOP 1 @name=Name,
FROM NearestNeighbor
ORDER BY n,dist
您可以發佈您正在運行的sp以及任何表索引的信息嗎? – Matthew
我的sp包含最近的鄰居,如issac在微軟中所解釋http://blogs.msdn.com/b/isaac/archive/2008/10/23/nearest-neighbors.aspx – user98454
SELECT TOP 1 WITH TIES *,b.GEOGraphy .STDistance(@input)AS dist FROM Numbers n JOIN UK b WITH(INDEX(spatial_geography_index)) - index hint \t \t ON b.Geography.STDistance(@input)<@ start * POWER(CAST(2 AS FLOAT) ,nn) \t \t AND b.Geography。STDistance(@input)> = \t \t \t CASE當n = 1 THEN ELSE 0開始@ *功率(CAST(2 AS FLOAT),NN-1)END \t \t \t其中N <= 10 \t \t \t ORDER由N個\t \t \t \t)SELECT TOP 1 @名稱=名稱, \t從最近鄰 \t ORDER BY N,DIST – user98454