Поиск всех записей на расстоянии X от любых записей в таблице - PullRequest
0 голосов
/ 10 июня 2019

У меня есть таблица с несколькими географическими точками больниц (примерно 100 строк) и еще одна таблица с несколькими географическими точками (десятки тысяч строк).Как выбрать ВСЕ из последних записей, которые находятся в радиусе X ЛЮБОГО из прежних записей?

1 Ответ

3 голосов
/ 11 июня 2019

Использование 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);

Похожие:

...