Heim  >  Artikel  >  Datenbank  >  Wie kann ich mit der Haversine-Formel effizient nach Adressen innerhalb eines bestimmten Bereichs in MySQL fragen?

Wie kann ich mit der Haversine-Formel effizient nach Adressen innerhalb eines bestimmten Bereichs in MySQL fragen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-01 18:20:30422Durchsuche

How to Efficiently Query for Addresses Within a Specific Range in MySQL using the Haversine Formula?

MySQL-Abfrage zur Auswahl von Koordinaten innerhalb eines angegebenen Bereichs

In Ihrer Datenbank gibt es eine große Anzahl von Adressen, jede mit ihrem eigenen Breitengrad und Längengrad. Sie möchten mithilfe der Google Maps-API nur die Adressen innerhalb eines 5-Meilen-Radius um einen bestimmten Benutzerstandort auf einer Karte anzeigen.

Um zu vermeiden, dass in Java unnötigerweise alle Datensätze abgerufen und Entfernungsberechnungen durchgeführt werden, was ineffizient wäre, Erwägen Sie die Verwendung der Haversine-Formel in Ihrer MySQL-Abfrage. Diese Formel berechnet den Abstand zwischen zwei Punkten auf der Erdoberfläche. Hier ist die geänderte Abfrage:

<code class="sql">SELECT *, (3959 * acos(cos(radians(?)) * cos(radians(lat)) * cos(radians(lng) - radians(?)) + sin(radians(?)) * sin(radians(lat)))) AS distance
FROM your_table
HAVING distance < 5</code>

Ersetzen Sie in dieser Abfrage die Fragezeichen (?) durch die Breiten- und Längengrade für den Standort des Benutzers ($lat und $lng aus Ihrem Java-Code). In der Entfernungsspalte wird die Entfernung zwischen jeder Adresse und dem Standort des Benutzers gespeichert.

Mit dieser Abfrage rufen Sie nur die Adressen ab, die innerhalb des angegebenen Bereichs liegen, wodurch Ihre Abfrageleistung optimiert wird.

Das obige ist der detaillierte Inhalt vonWie kann ich mit der Haversine-Formel effizient nach Adressen innerhalb eines bestimmten Bereichs in MySQL fragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn