-1

我需要在 SQL 中尽可能高效/快速地执行此算法。

while( numberOfResults  < DesiredResults and NotCutOffCondition){
    retrieve and store up to (DesiredResults - numberOfResults) results 
        based on radius
    expand radius
}

关于半径的查询非常基本,只是小于/大于限制。我听说 SQL 中的 while 循环效率低下,因为它不是基于集合的,但我想不出没有它的方法。有没有更好的办法?这将在 MySQL 上运行,如果在这方面有任何我不知道的差异,可能会在 SQL Server 上运行。

考虑下面的表结构

id int
x_position decimal indexed
y_position decimal indexed

我需要找到离给定 x,y 位置最近的 n 点。在一个小区域内可能有数千个可能的点,但并非总是如此。因此我需要从一个小半径螺旋出来。或者至少我认为,如果我只希望在通常的查询中获得大约 20 分,那将是最有效的。

4

1 回答 1

1

对于 SQL Server,这是一种在单个查询中使用扩展半径查找最近邻居的方法。这可以很容易地修改为资助 k 个邻居。

http://blogs.msdn.com/b/isaac/archive/2008/10/23/nearest-neighbors.aspx

于 2013-08-05T04:50:55.220 回答