我有一个包含许多circles
的数据库(每个都有x,y和半径)。
我需要找到包含由x / y给出的特定点的每个圆。
有没有办法在better than linear time
中执行此操作?
测试每个圈子会使我的应用程序安静得多。
提前致谢。
答案 0 :(得分:2)
在没有几何索引的情况下,在某些RDBMS中,您可以为:
创建基于函数的索引x-r
x+r
y-r
y+r
...并在查询中添加谓词:
select ...
where point_x between x-r and x+r and
point_y between y-r and y+r and
... etc ...
至少可以让你获得候选行。
答案 1 :(得分:0)
除非你设法按照特定的顺序对圆圈进行排序,否则我不知道如何比线性时间更快地完成这项工作。
如果您向我们提供您的查询,可能还有一些很好的优化。