在邮政编码的n英里内查询数据库的最佳方法是什么?

mmc*_*ole 6 linq zipcode spatial-query sql-server-2008

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

查询数据库中所有记录以查找距离另一个邮政编码n英里内的所有条目的"最佳做法"是什么?

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

对于这样的常见查询来说,这看起来非常昂贵.

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

我知道这是网站上的一个常见问题,所以希望有人可以指出我正确的方向以获得最佳方式.我正在使用SQL Server 2008,如果有预先构建的解决方案,那么很棒,因为我真的不想在这个例子中重新发明轮子.


相关问题:获取半径范围内的所有邮政编码(这对我没有帮助)
另外,我知道这个SourceForge项目,但它已经废弃,不再使用.

mac*_*nir 7

我会运行一个查询,返回包含径向搜索圆(minlat <lat <maxlat和minlong <long <maxlong)的方形包络中括起来的所有记录,然后对其进行后处理以仅返回半径圆内的点.(确保索引纬度和长字段).

如果您想获得想象力,SQL Server支持空间索引.