@Kostik_1993
Web Developer

Какой алогитм поиска по базе более быстрый и менее затратный по ресурсам для выполнения?

Всем привет, пытался нагуглить, но пока видимо не могу верно сформулировать ответ на свой вопрос из-за этого поиск ответа не даёт результатов.

У меня есть БД на PostgresQL. Есть список локаций в основном это города либо крупные посёлки. Нужно орагнизовать поиск событий для них и для входящих в определённый радиус от них соседей.

По пути решения вижу два варианта. Первый это задавать latitude logtitude для событий и локаций и потом делать поиска по базе по ним через PostGIS или что-то другое или подобного рода решение

Второй это использовать доп таблицу где будет связь между двумя точками и расстояние между ними. Будут выбираться массив ID-ков локаицй под радиус и с ними делаться выборка событий с where in location_id (IDS)

Кажется что первый более гибкий. Но его нужно правильно реализовать чтобы был профит. Второй вариант более жёсткий, но очень понятный и через индексы должно летать + возможно удобно кешировать.

Какой вариант вы бы выбрали и может быть знаете какое-то хорошее решение под это?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 3
На своём проекте я выбрал второй вариант. Предрасчёт занимает какое-то время, но зато потом всё просто и быстро. И с тех пор, как посчитал расстояния четыре года назад, не приходилось трогать это вообще.
Но есть две важных детали: список локаций у нас фиксированный, новые не добавляются и у нас высокая нагрузка и важно время ответа.
Ответ написан
Комментировать
AshBlade
@AshBlade
Просто хочу быть счастливым
Попробуй GIST индекс
Ответ написан
Комментировать
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Второй вариант похож на попытку повторить изкоробочную функциональность графовой СУБД. Так что если Постгрес, то я за первый - PostGIS хорош.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы