使用唯一“对”填充数据库表的最快方法(zipcodes)

时间:2014-03-19 18:32:26

标签: sql zipcode

背景故事:为了帮助我的应用快速计算两个拉链之间的乌鸦飞行距离(以及谷歌地图的距离......),我将数据存储在一个基本上有三列的表中:ZipCode1,{{ 1}}和Zipcode2

我的数据库中有另一个名为Distance的表,其中包含所有美国邮政编码。

我想用所有独特的“邮政编码对”预先填写我的距离表。由于我不想要重复对,Zipcodes的整数值应始终小于ZipCode1

所以,这给我带来了一个难题,即找出最快/最好的方法来做到这一点。奖励积分如果还有一种方法可以重新运行该方法以添加缺失的对。

如果我用C#对它进行编码,那么写出来会很简单,但运行得非常慢(据我所知)。必须有一些更快的方法,也许是通过直接SQL?

感谢任何帮助/想法。

2 个答案:

答案 0 :(得分:1)

尝试以下查询,该查询应生成所有对并将它们全部插入到目标表中:

INSERT INTO ZipcodePairs (Zipcode1, Zipcode2)
SELECT z1.Zipcode, z2.Zipcode
  FROM Zipcodes z1
  JOIN Zipcodes z2 ON (z1.Zipcode < z2.Zipcode);

答案 1 :(得分:1)

试试这个......

INSERT INTO YOUR_DISTANCE_TABLE
(ZIPCODE1, ZIPCODE2)
SELECT A.ZIPCODE, B.ZIPCODE FROM ZIPCODES A
CROSS JOIN ZIPCODES B
WHERE A.ZIPCODE<B.ZIPCODE
相关问题