Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 查找包含特定点的圆_Performance_Database Design - Fatal编程技术网

Performance 查找包含特定点的圆

Performance 查找包含特定点的圆,performance,database-design,Performance,Database Design,我有一个包含许多圆的数据库(每个圆都有x、y和半径)。 我需要找到每个圆,其中包括x/y给定的特定点 在中有没有比线性时间更好的方法? 测试每个循环会大大降低我的应用程序的速度 提前谢谢。除非你能按照非常具体的顺序对圆圈进行排序,否则我看不出这怎么能比线性时间更快 如果您向我们提供您的查询,可能还有一些很好的优化工作要做。在没有几何索引的情况下,在一些RDBMS中,您可以为以下内容创建基于函数的索引: x-r x+r y-r y+r 。。。并将谓词添加到查询中: select ... wher

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

中有没有比线性时间更好的方法?
测试每个循环会大大降低我的应用程序的速度


提前谢谢。

除非你能按照非常具体的顺序对圆圈进行排序,否则我看不出这怎么能比线性时间更快


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

在没有几何索引的情况下,在一些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 ...

这至少会让你得到候选行。

这是一个适当索引(例如排序)你的“数据库”的问题。问题是,虽然可以按轴(x或y)排序,但半径可能会有所不同。可能有很多方法可以返回结果,但我认为你无法击败线性时间方法。