Heim  >  Artikel  >  Datenbank  >  Wie kann ich mit MySQL effizient Adressen innerhalb eines bestimmten Bereichs abrufen?

Wie kann ich mit MySQL effizient Adressen innerhalb eines bestimmten Bereichs abrufen?

Susan Sarandon
Susan SarandonOriginal
2024-11-03 15:13:03236Durchsuche

How to Efficiently Retrieve Addresses within a Specified Range using MySQL?

Effizientes Abrufen von Adressen innerhalb eines bestimmten Bereichs mit MySQL

Um effektiv Adressen innerhalb eines 5-Meilen-Radius von einem bestimmten Standort abzurufen, ist es das Richtige Es ist ineffizient, alle 100.000 Adressen abzurufen und die Entfernung in Java zu berechnen. Stattdessen bietet MySQL mit der Haversine-Formel eine geeignete Lösung.

Die Haversine-Formel berechnet den Großkreisabstand zwischen zwei Punkten auf einer Kugel, in diesem Fall dem Standort des Benutzers und jeder Adresse. Mit dieser Formel können Sie eine MySQL-Abfrage wie folgt erstellen:

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

In der obigen Abfrage stellen $lat und $lng die Koordinaten des Benutzers dar, während lat und lng die Adresskoordinaten darstellen. Durch Anwendung der Haversine-Formel berechnet die Abfrage die Entfernung zwischen jeder Adresse und dem Standort des Benutzers und wählt nur diejenigen innerhalb des 5-Meilen-Bereichs aus.

Mit diesem Ansatz können Sie effizient die Adressen abrufen, die benötigt werden auf der Karte angezeigt und erspart gleichzeitig die rechenintensive Aufgabe, Entfernungen für alle 100.000 Adressen zu berechnen.

Das obige ist der detaillierte Inhalt vonWie kann ich mit MySQL effizient Adressen innerhalb eines bestimmten Bereichs abrufen?. 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