我有两个表,称为A和B,它们包含有关城市信息的两列:纬度和经度。A包含100,000条记录,B包含1,000,000条记录。我的目标是找到距离A中每一行1公里以内的B行。如何高效地完成这个任务?我希望在30分钟内完成。
以下查询需要很长时间(我认为这是因为需要进行100,000 * 1,000,000 = 100亿次行比较的结果!):
以下查询需要很长时间(我认为这是因为需要进行100,000 * 1,000,000 = 100亿次行比较的结果!):
select *
from A
inner join B
on is_nearby(A.latitude, A.longitude, B.latitude, B.longitude)
is_nearby()
是一个简单的函数,用于查找纬度和经度之间的差异。
我对 A 行的一个数据进行了测试,每行大约需要 5 秒钟。按照我的计算,查询执行需要数周时间,这是不能接受的。