2011-07-21 70 views
0

我已經有了一個基本的SQL查詢,看起來像:SQL Server 2008中Geometry.STBuffer(...)很慢

SELECT TOP 1 
[geom].STBuffer(500) 
FROM [db].[dbo].[boundaries] 

通過500米其中必不可少的需要地圖邊界從數據庫中並對其進行緩衝。我遇到的問題是速度非常慢,然後服務器內存不足!我確信有些東西一定是錯誤的,因爲在GIS程序中這樣的簡單操作需要幾秒鐘的時間才能運行,而這在放棄之前運行了大約一分鐘。

邊界相當複雜,但它不應該如此複雜,導致服務器內存不足,我相信這一點。

如果我將緩衝距離縮短到100米,它會在大約14秒內運行並完成,但仍然太慢而無法實時使用。

任何想法,爲什麼它可能會這麼慢,以及有關如何加快它的任何提示?

謝謝,

回答

2

這是SQL Server 2008帶有STBuffer已知的限制 - 其是容易被緩慢和可能運行內存當距離參數比物體的直徑和該對象具有超過1000分。這個問題有一個connect項目,並在Sql Server Denali中修復。

作爲一種解決方法,您可以在調用緩衝區之前嘗試對對象運行Reduce以降低其複雜性,並使用BufferWithTolerance方法傳入較高的容差,從而得到較簡單的結果。