我有一个包含 300'000 个单位的表格,其中每个单位的位置由一个坐标定义(X,Y)
。我想知道哪些单位与每个单位都在一定距离内?
前任。
UnitiID X Y
A 10 15
B 10 25
C 25 15
proc sql;
create table work.Test2 as
select distinct
a.UnitID,
a.X,
a.Y,
b.UnitID as CloseUnit label="CloseUnit",
sqrt( (a.X-b.X)**2 + (a.Y-b.Y)**2 ) as distance
from
work.Test as a
left join
work.Test as b
on
0<sqrt( (a.X-b.X)**2 + (a.Y-b.Y)**2 ) <=15
;
quit;
结果:
UnitiID X Y CloseUnit Distance
A 10 15 B 10
A 10 15 C 15
B 10 25 A 10
C 25 15 A 15
这需要整个表的大量 cpu 时间,因为我们将进行 300'000^2 比较,我该如何执行此任务?