это можно сделать очень быстро с любым механизмом базы данных, который поддерживает двумерные индексы ... и mysql поддерживает неограниченные измерения, насколько я знаю ... это просто ... вы используете двумерный индекс, чтобы ограничить набор результатов до разумного размера очень быстро ... затем вы проверяете свой набор результатов с помощью алгоритма вычисления высокой точности, если вам нужно ... не сложно ... за исключением того, что вам может понадобиться или два списка вместе, если они пересекают линию долготы 180 / -180
сделать двумерный индекс просто .... индекс (широта, долгота) ... этот индекс работает только для пар широта или широта, долгота ... он не будет работать только на долготе ... если вам нужен дополнительный индекс для индекса долготы (долготы) .... Я выбираю приблизительный квадрат оценки и закругляю углы, если я забочусь о них. ...
если у вас есть почтовый индекс или город, с которого нужно начинать ... почтовые индексы - это всего лишь 1-й индекс ... нет проблем, чтобы это произошло быстро ... просто используйте индексный индекс (zip) ... и если ваш жесткий диск слишком медленный, найдите твердотельный накопитель, чтобы исключить время поиска ... или используйте огромный оперативный памяти и кэшируйте всю таблицу ... это не сложная проблема, в любом случае вы хотите пойти
если это не достаточно быстро для вас, использование сервиса someones не поможет, потому что у вас есть сетевые издержки ... вам придется хранить ваши данные непосредственно в ram / ssd и создавать свою собственную 2-d / 1-d индексацию система, если вам это нужно (не сложно) ... этот маршрут, вероятно, может превысить sql в 10 раз или около того, потому что движок sql имеет много накладных расходов .... Я полагаю, кто-то может предложить услугу, которая работает самостоятельно машина, но на самом деле, это не будет намного лучше, чем SQL, потому что вам все равно придется пройти через кучу обручей, чтобы сделать запрос к их службе. sql и 2-d индексы с твердотельным накопителем будут чертовски быстрыми, вам не нужно обрабатывать данные самостоятельно, если вы не являетесь почтовым отделением, сортируя 10000 почтовых отправлений в секунду на одном компьютере, обслуживающем данные. тогда вам придется написать свои собственные процедуры управления данными.