查找包含特定Point的圆圈

时间:2013-11-19 14:30:52

标签: performance database-design

我有一个包含许多circles的数据库(每个都有x,y和半径)。 我需要找到包含由x / y给出的特定点的每个圆。

有没有办法在better than linear time中执行此操作? 测试每个圈子会使我的应用程序安静得多。

提前致谢。

2 个答案:

答案 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)

除非你设法按照特定的顺序对圆圈进行排序,否则我不知道如何比线性时间更快地完成这项工作。

如果您向我们提供您的查询,可能还有一些很好的优化。