2013-08-05 78 views
-1

我需要在SQL中尽可能高效/快速地执行此算法。优化扩展SQL查询

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

对半径的查询是非常基本的,只是小于/大于限制。我听说虽然循环在SQL中效率低下,因为它不是基于设置的,但我想不到没有一种方法。有没有更好的办法?这将运行在MySQL上,也许是SQL Server,如果在这方面有什么不同我不知道。

考虑以下表结构

id int 
x_position decimal indexed 
y_position decimal indexed 

我需要找到最近的n个点给定的x,y位置。在一个小区域内可能有数千个可能的点,但并非总是如此。所以我需要从小范围内旋出。或者至少我认为这将是最有效的,如果我只想在通常的查询上得到20分左右的话。

+2

这将有助于对你的表(S)和您这里涉及到准确的查询更多详细信息。 –

+1

你最好发表表格模式,样本数据和期望的结果,以提高你的答案的机会。 – peterm

+0

对不起,认为伪代码足以回答效率问题。 – ProdigousRanger

回答