Вы могли бы ускорить свои вычисления, сначала отфильтровав свой запрос, используя «приближение круга» - т.е. вернуть все почтовые индексы в пределах определенного радиуса delta
. Основной запрос должен выглядеть примерно так:
SELECT postcode, x, y FROM table WHERE ((x BETWEEN x - delta AND x + delta) AND (y BETWEEN y - delta AND y + delta))
И теперь количество оставшихся данных должно быть немного более управляемым.
Кроме того, если вы разрабатываете что-то «критически важное», обязательно посмотрите PostGIS . Возможно, они уже решили некоторые проблемы, с которыми вы можете столкнуться ...;)