首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最近邻搜索查询性能

最近邻搜索查询性能
EN

Stack Overflow用户
提问于 2013-08-20 23:29:48
回答 1查看 358关注 0票数 4

我使用的是Microsoft SQL Server 2012,我有一个简单的查询,可以选择按离特定点最近的顺序排序的前50名用户,例如:

代码语言:javascript
复制
DECLARE @Location geography = geography::Point(30.9384016, 29.9582148, 4326)

SELECT TOP 50 * 
FROM Users  
ORDER BY LastLocation.STDistance(@Location)

查看执行计划,我可以看到它没有使用我的空间索引

该表包含大约40,000条记录,查询的执行时间超过1分钟,我的空间索引是这样创建的:

代码语言:javascript
复制
create spatial index IX_Location ON Users (LastLocation) using GEOGRAPHY_AUTO_GRID

我尝试在查询中使用提示并指定索引,如下所示:

代码语言:javascript
复制
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)

但实际上它的执行时间要长得多,有人能告诉我如何提高这个查询的性能吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-09-10 18:38:20

添加WHERE子句以限制距离。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18339108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档