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!