К примеру есть таблица адресов компаний из 3-х полей:
company_id,
lat,
lon.
Необходимо получить расстояния до ближайшего адреса каждой из компаний.
Для работы с геоданными использую расширения
cube и
earthdistance.
Выполняю запрос:
SELECT
company_id,
MIN(earth_distance(ll_to_earth(lat,lon), ll_to_earth(53.96,83.96))) AS distance
FROM companies
GROUP BY company_id;
Запрос делает что надо, но медленно. GIST индекс типа
CREATE INDEX i_name on companies USING gist(ll_to_earth(lat, lon));
не помогает.
Есть ли способы ускорения такого запроса?
PS
Задал вопрос на SO
https://stackoverflow.com/questions/48146004/how-t...
Ответ отмеченный как решение позволил увеличить скорость скрипта в 3 раза.