Использование ST_DWithin()
от PostGIS:
SELECT *
FROM whatever w
WHERE EXISTS (
SELECT FROM hospital h
WHERE ST_DWithin(h.the_geog, w.the_geog, $distance_in_meters)
);
Полу-соединение EXISTS
не только (вероятно) самое быстрое, но и позволяет избежать дубликатовкоторые могли бы получаться из аналогичных запросов с простым (OUTER
) JOIN
.
Вы должны по крайней мере иметь этот пространственный индекс GiST :
CREATE INDEX ON hospital USING gist (the_geog);
Похожие: