我有一个包含一堆地球坐标(纬度/经度)和相关半径的表。我还有一个表格,其中包含一堆我想与这些圆圈匹配的点,反之亦然。两者都是动态的;即可以随时添加或删除新的圆或新的点。添加任何一个时,我希望能够将新圆或点与所有适用的点或圆分别匹配。
我目前有一个 PostgreSQL 模块,其中包含一个 C 函数,可以在给定坐标的情况下查找地球上两点之间的距离,而且它似乎可以工作。问题是可扩展性。为了让它发挥作用,该函数当前必须扫描整个表并对每一行进行一些三角计算。两个表都按纬度和经度索引,但函数不能使用它们。在我们知道这两件事是否匹配之前,它必须做它的事情。新信息的发布频率可能高达每秒几次,并且每次检查每个点都开始变得相当笨拙。
我看过 PostgreSQL 的几何类型,但它们似乎更适合直角坐标而不是球体上的点。
如何安排/优化/过滤/预先计算这些数据以使匹配更快并减轻负载?