PostGIS в реальных задачах: ускорение поиска в радиусе

Когда в системе есть гео-сущности (тарифы, услуги), обычные WHERE lat BETWEEN... быстро перестают работать.

🗺 Что делал: • Включил расширение PostGIS в PostgreSQL 17 • Использовал тип GEOMETRY(Point, 4326) для хранения координат • Создал GiST-индекс по гео-полю для ускорения пространственных запросов • Применил функцию ST_DWithin для поиска в радиусе вместо ручного расчёта расстояний

📊 Результат: • Поиск услуг в радиусе стал выполняться быстрее • Индекс занимал малый процент от размера таблицы — приемлемая плата за скорость • Запросы стали читаемее: ST_DWithin(geom, point, 50000) вместо формулы гаверсинуса

🔧 Стек: PostgreSQL 17, PostGIS, GeoAlchemy2, Shapely, SQLAlchemy 2.0

💡 Важно: Индексы ускоряют чтение, но замедляют запись. Ключ — в балансе и понимании паттернов доступа к данным.

#PostgreSQL #PostGIS #GeoData #Python #Backend #Database #OpenToWork

PostGIS в реальных задачах: ускорение поиска в радиусе | Сетка — социальная сеть от hh.ru