У меня есть база данных мероприятий, каждая из которых может проводиться в течение 3 дней, каждый день содержит почтовый индекс.
Таким образом, база данных выглядит так (+ много других полей)
![enter image description here](https://i.stack.imgur.com/1zQrF.png)
В другой базе данных у меня есть информация о географическом местоположении (почтовый индекс, лат, длинный)
![enter image description here](https://i.stack.imgur.com/4z4pp.png)
Теперь пользователи могут вводить туда почтовый индекс ипоявится радиус и действия в этом радиусе.
Вопрос:
1 - Как лучше всего это сделать?
Решение на уме
Просмотрите все возможные почтовые индексы из действий и присоединитесь к ним на таблице Geo, чтобы получить их Lat / Lng
затем, когда пользователь ищет почтовый индекс, получи Lat / Lng и выполни математическое уравнение, чтобы получить все почтовые индексы рядом с этой точкой.
Но я не думаю, что с точки зрения производительности это хорошопуть, так как мне придется применить запрос на 3000+ действий
Коды, найденные для расстояния
Поиск местоположений поблизости с MySQL (формула Haversine)
SELECT id, (3959 * acos (cos (радианы (37)) * cos (радианы (широта)) * cos (радианы (lng) - радианы (-122)) + sin (радианы (37)) * sin (радианы (широты)))) AS расстояние от маркеров HAVING расстояние <25 ORDER BY distance LIMIT 0, 20; </p>
Что вы, ребята, думаете?