Какой тип данных должен быть переменной, содержащей ST_SRID? У меня есть функция следующим образом и нужно использовать выражение типа srid: = ST_SetSRID (ST_MakePoint (start_long, start_lat), 4326) ;. Каким должен быть тип данных 'srid'? Я проверил с целыми, точки и т.д.ST_SRID тип данных в Postgres
create function ATest3(start_lat double precision, start_long double precision) returns setof int as $$
declare
r record;
srid ?????????????????????????????
begin
srid := ST_SetSRID(ST_MakePoint(start_long, start_lat), 4326);
for r in select DISTINCT journey_id, ST_DWithin(srid, geom, 2/111.325), break_id from journey_break_points loop
return next r.break_id;
end loop;
return;
end;
$$ language plpgsql;
Как это ускорится, как во втором выражении? ST_SetSRID (ST_MakePoint ($ 2, $ 1), 4326) должен быть рассчитан для каждой записи в таблице «travel_break_points». Я думал, что инициализация переменной уменьшает нагрузку на ST_DWithin. –
ST_SetSRID (ST_MakePoint ($ 2, $ 1), 4326) фактически выполняется только один раз. PostgreSQL достаточно умен, чтобы оптимизировать это в один вызов. См. Обновленный ответ. – Patrick
Спасибо за детали! –