Wir tun dies für etwa 1200 Standorte. Ich würde einfach die Haversine-Formel im laufenden Betrieb verwenden, obwohl es je nach Ihrer Anwendung besser ist, sie in PHP anstatt in SQL zu speichern. (Unsere Implementierung ist in .net, so dass Ihre Kilometer variieren können).
Wirklich unser größter Nachteil bei der Art und Weise, wie wir es implementiert haben, ist, dass jede Berechnung (bis vor kurzem) auf der Datenebene berechnet werden musste, die schmerzhaft langsam war (wenn ich langsam sage, ich meine wirklich nicht sofort eine Sekunde oder so), aber das war aufgrund der Tatsache, dass es die Entfernung für alle 1200 Standorte basierend auf der gelieferten Postleitzahl berechnen musste.
Je nach gewählter Route gibt es Möglichkeiten, die Berechnung der Entfernung zu beschleunigen, indem Sie Längen- und Breitengrad betrachten und Entfernungen außerhalb eines vordefinierten Bereichs entfernen (wenn Sie beispielsweise alle Adressen innerhalb von 20 sehen) Meilen gibt es einen Längenbereich, den Sie berechnen können, die alle Adressen haben müssen, um 20 Meilen weg zu sein.) Das kann Ihre Frage beschleunigen, wenn es sein muss.
Wir haben tatsächlich alle möglichen Kombinationen in unserer Datenbank gespeichert. In der Realität hört es sich an, als könnte es ein großer Datenspeicher sein, aber es ist wirklich nicht im großen Umfang der Dinge. Mit Indizes kann es ziemlich schnell sein, und Sie müssen sich keine Sorgen um Algorithmusoptimierung usw. machen. Wir haben uns dagegen entschieden, weil wir die Gleichung in C# hatten, und es uns erlaubte, die Informationen zu speichern, die für alle Berechnungen benötigt werden Geschäftsstufe. Beides wird gut funktionieren, es kommt nur darauf an, was Sie bevorzugen.
Siehe auch die feine http://www.movable-type.co.uk/scripts/latlong.html#cosine-law – Arjan