Быстрый поиск рядом с пользователями, использующими PostGIS - PullRequest
2 голосов
/ 26 апреля 2010

У меня есть 5 таблиц:

- users - information about user with current location_id (fk to geo_location_data)
- geo_location_data - information about location, with PostGIS geography(POINT, 4326) column
- user_friends - relationships between users.

Я хочу найти ближайших друзей для текущего пользователя, но выполнение запроса на выбор занимает много времени, чтобы узнать, является ли пользователь другом, и после этого выполнить выбор с помощью ST_DWithin. Может быть что-то не так в модели предметной области или в запросах?

Ответы [ 2 ]

1 голос
/ 03 мая 2010

Первый шаг - индексировать столбец геометрии. Примерно так:

  CREATE INDEX geo_location_data_the_geom_idx ON geo_location_data USING GIST (the_geom);
0 голосов
/ 13 марта 2012

Попробуйте использовать буфер на ваших точках и оператор пересечения.

SELECT ... FROM A, B WHERE Intersects(B.the_geom, ST_Buffer(A,1000))

Это должно быть быстрее.

...