SELECT TOP 1 * ST_DISTANCE etc
或者更具體地說
SELECT TOP 1 * FROM c WHERE ST_DISTANCE(c.AssetLocation, { 'type': 'Point', 'coordinates': [115.58, 21.84] }) < 49999
回報最接近對象的查詢,如果沒有,我怎麼會按距離?
感謝,
伊恩
SELECT TOP 1 * ST_DISTANCE etc
或者更具體地說
SELECT TOP 1 * FROM c WHERE ST_DISTANCE(c.AssetLocation, { 'type': 'Point', 'coordinates': [115.58, 21.84] }) < 49999
回報最接近對象的查詢,如果沒有,我怎麼會按距離?
感謝,
伊恩
DocumentDB本身並不支持最近或ORDER BY使用地理空間索引呢。
ORDER BY的最佳方法是在查詢中投影(SELECT
)距離,並通過客戶端或通過存儲過程對其進行排序(降低多次往返的延遲成本)。
對於大型數據集,您可以通過在小值開始的距離上添加一個過濾器(WHERE
),並通過增加距離值來迭代/步進,直到找到第一個點爲止進行最優化。
你能否給我提供一個存儲過程的例子,通過這個存儲過程,我可以首先使用ST_DISTANCE計算距離,然後在文檔數據庫中通過距離對它進行排序。請幫助我,因爲我從上週就陷入了這個問題。謝謝 !! –
作爲一種更樂觀的模式:我用另一種方式進行空間範圍查詢 - 我只是從數據庫中獲得TOP 100並過濾客戶端。如果碰巧我會得到100個結果,表明我沒有得到所有結果(基本上從來不是這樣),我正在做一些日誌記錄和一個帶有WHERE條件的回退例程。這允許我運行樂觀(並且效率更高的查詢)99.x%的時間。 –
最接近什麼? –
最接近我提供給ST_DISTANCE函數的一個點 –
否,它將返回數據庫中某個任意點與您提供的點之間的距離,您可以按距離排序 –