Очевидно, что индекс (latitude, longitude)
в каждой из таблиц - если у вас их нет - поможет в запросе (фактически, одного индекса, вероятно, достаточно).Но основной проблемой может быть размер данных.
Это будет особенно верно, если набор результатов будет.,,действительно большой.Вы вычисляете размер, запустив:
select sum(p.cnt * lut.cnt)
from (select latitude, longitude, count(*) as cnt
from allpos
group by latitude, longitude
) p join
(select latitude, longitude, count(*) as cnt
from policylutgrid
group by latitude, longitude
) lut
on p.latitude = lut.latitude and p.longitude = lut.longitude;
Это размер ожидаемой таблицы.Если он действительно большой - скажем, более нескольких миллиардов строк - тогда размер результирующего набора может быть определяющим фактором.Если это так, то проблема заключается в дублировании значений лат / длин в таблицах.Дальнейшее расследование может подсказать, что с ними делать.