Мы делаем это для 1200 мест. Я бы просто использовал формулу Хаверсайна на лету, хотя, в зависимости от вашего приложения, было бы лучше хранить ее на PHP, а не на SQL. (Наша реализация находится в .net, поэтому ваш учет может отличаться).
На самом деле наш самый большой недостаток в том, как мы его реализовали, заключается в том, что каждый расчет (вплоть до недавнего времени) должен был быть рассчитан на уровне данных, который был мучительно медленным (когда я говорю, что медленно, я действительно имею в виду, что не мгновенный или около того), но это было связано с тем, что он должен был рассчитать расстояние для всех 1200 мест на основе предоставленного почтового индекса.
В зависимости от выбранного вами маршрута, существуют способы ускорения вычислений числового расстояния путем просмотра долготы и широты и удаления тех, которые находятся за пределами предварительно определенного диапазона (например, если вы смотрите на все адреса в пределах 20 миль есть диапазон долготы, который вы можете рассчитать, все адреса которого должны находиться на расстоянии 20 миль.) Это может ускорить ваш запрос в случае необходимости.
Мы на самом деле смотрели на хранение всех возможных комбинаций в нашей базе данных. В действительности это звучит так, как будто это может быть большое хранилище данных, но на самом деле это не так уж много. С индексами это может быть довольно быстро, и вам не нужно беспокоиться об оптимизации алгоритма и т. Д. Мы решили отказаться от него, потому что у нас было уравнение в C #, и это позволило нам кэшировать информацию, необходимую для выполнения всех вычислений в бизнес-уровень. Либо будет работать нормально, это просто вопрос ваших предпочтений.