gpt4 book ai didi

linq - 查询数据库中距离邮政编码 n 英里内的记录的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 14:08:00 25 4
gpt4 key购买 nike

我的数据库中有一个记录列表,每条记录都与一个邮政编码相关联。

查询我的数据库中的所有记录以查找距另一个邮政编码 n 英里范围内的所有条目的“最佳实践”是什么?

每个邮政编码在数据库中都有一个与之关联的纬度/经度,所以我知道我必须使用它。但是,我无法想象在每对邮政编码上运行任何类型的距离公式,转换为英里并拒绝不在我半径范围内的那些。

对于这样一个常见的查询,这在计算上似乎非常昂贵。

我也考虑过进行所有对的预计算,但它似乎太大而无法考虑。美国大约有大约 40,000 个邮政编码。因此,每个邮政编码的所有对数据库将是 (40,000)^2,或 16 亿个条目。

我知道这是网站上的一个常见问题,所以希望有人能指出我正确的方向以获得最佳方式。我正在使用 SQL Server 2008 如果有预先构建的解决方案,那就太好了,因为我真的 不想重新发明轮子 在这种情况下。

相关问题:Getting all zip codes within radius (这对我没有帮助)
另外,我知道这个 SourceForge项目,但它已废弃且不再使用。

最佳答案

我将运行一个查询,该查询返回括在包含径向搜索圆的方形信封中的所有记录(minlat < lat < maxlat 和 minlong < long < maxlong),然后对其进行后处理以仅返回半径圆本身内的点。
(确保您的 lat 和 long 字段已编入索引)。

如果你想花点心思,SQL server 支持 spatial indexes .

关于linq - 查询数据库中距离邮政编码 n 英里内的记录的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/527512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com