我在SO上搜索并没有真正找到答案,但这似乎是一个常见的问题.
我在数据库中有几十万个位置,每个位置都有地理编码(lat/long).如果它很重要,它们遍布美国现在,我有一个客户端应用程序,我希望用户给我他们的纬度/长度和半径(比如5mi,10mi,25mi等)我想要返回所有的匹配的记录.我只关心通过比如Haversine公式而不是最短的道路距离可以获得的距离值.但是,鉴于此,我希望它尽可能准确.
该数据库大多是只读的.在美好的一天,可能有10个插入.现在,我将拥有数百个客户,也许将有成千上万的客户使用该软件.我希望用户在几秒钟内获得结果,但如果单个查询需要10-20秒,那么它会在遇到大量客户端时进行爬网.
如何尽可能高效地提供结果?我知道我可以将它们存储在MySQL或PostgreSQL中(Oracle和MS SQL Server都是这样的,但是其他一些开源数据存储可能没问题)并且只将Haversine公式放在WHERE子句中,但我不认为将产生有效的结果.