我需要在 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 分,那将是最有效的。