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!