ответ ниже, опробованы разные варианты.Для меня было важно найти все магазины близко друг к другу на площади 500м. Количество итераций 192 миллиона, время выполнения 246 секунд.
cur.execute('SELECT * FROM A_Coor CROSS JOIN B_Coor')
data = cur.fetchall() # read all databse
for coo in data:
obj1_lat = radians(float(coo[1]))
obj1_lon = radians(float(coo[2]))
obj2_lat = radians(float(coo[5]))
obj2_lon = radians(float(coo[6]))
try:
dist = 6371.01 * acos(sin(obj1_lat)*sin(obj2_lat) + cos(obj1_lat)*cos(obj2_lat)*cos(obj1_lon - obj2_lon))
if dist < 0.5:
print(" The distance is %.2fkm." % dist)
near_pos = (coo[0], coo[1], coo[2], coo[3], coo[4], coo[5], coo[6], dist)
cur.execute("INSERT INTO fivehundred_stores (pos_cli, lat_mag, lon_mag, fake_id, pka_id, lat_pka, lon_pka, distance) VALUES (?, ?, ?, ?, ?, ?, ?, ?);", near_pos)
near_pos = []
con.commit()
except:
error_comb = []
error_comb =(coo[0], coo[4])
print (error_comb)
error_comb = []
pass