Verwenden der Haversine-Formel zum Finden von Standorten in der Nähe
Beim Umgang mit einer großen Menge an Unternehmensstandorten, die in einer Datenbank gespeichert sind, steigt die Effizienz der Suche Entscheidend ist, wer einem bestimmten Punkt am nächsten liegt. Der derzeitige Ansatz, alle Standorte abzurufen und die Entfernungen einzeln zu berechnen, kann mit zunehmender Anzahl von Unternehmen unerschwinglich langsam werden.
Einführung der Haversine-Formel
Die Haversine-Formel bietet eine effizientere Methode zur Berechnung der Entfernung zwischen zwei Punkten auf der Erde unter Berücksichtigung der Krümmung des Planeten. Dies kann in die SQL-Abfrage integriert werden, um die nächstgelegenen Standorte direkt abzurufen.
Optimierte SQL-Abfrage
Die optimierte SQL-Abfrage unter Verwendung der Haversine-Formel würde etwa so aussehen:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
In dieser Abfrage stellen 37 und -122 den Breiten- bzw. Längengrad des angegebenen Standorts dar. Die Entfernungsspalte enthält die Entfernung zwischen dem angegebenen Standort und jedem Unternehmen. Die HAVING-Klausel filtert Standorte heraus, die weiter als 25 Meilen (oder einen anderen gewünschten Radius) entfernt sind.
Vorteile
Dieser optimierte Ansatz hat mehrere Vorteile:
Fazit
Durch die Einbindung der Haversine-Formel in die SQL-Abfrage können Sie die Effizienz bei der Suche nach den nächstgelegenen Standorten zu einem bestimmten Punkt erheblich steigern, Leistungsprobleme effektiv lösen und eine skalierbare Lösung bereitstellen für große Datenbanken.
Das obige ist der detaillierte Inhalt vonWie kann die Haversine-Formel die Suche nach Orten in der Nähe in einer Datenbank optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!