4
我使用的是Microsoft SQL Server 2012中,和我有一個簡單的查詢選擇前50名用戶由最近下令到一個特定的點,例如:最近鄰搜索查詢性能
DECLARE @Location geography = geography::Point(30.9384016, 29.9582148, 4326)
SELECT TOP 50 *
FROM Users
ORDER BY LastLocation.STDistance(@Location)
縱觀執行計劃中,我可以看到,它沒有使用我的空間索引
表包含大約40,000記錄和查詢需要超過1分鐘的執行,我的空間索引像這樣創建:
create spatial index IX_Location ON Users (LastLocation) using GEOGRAPHY_AUTO_GRID
我一直在使用暗示我的查詢,並指定類似於以下的指標嘗試:
DECLARE @Location geography = geography::Point(30.9384016, 29.9582148, 4326)
SELECT TOP 50 *
FROM Users WITH (INDEX(IX_Location))
WHERE LastLocation.STDistance(@Location) IS NOT NULL
ORDER BY LastLocation.STDistance(@Location)
但實際上,它需要更多的時間執行,可能會有人告訴我,我怎麼能提高性能這個查詢?
感謝
where子句的例子是什麼? – roemhildtg
恐怕我忘了三年前我在想什麼,但可能像'WHERE LastLocation.STDistance(@Location)<10000'。 –