Optimierung von Entfernungsberechnungen für die Suche nach Standortnähe
Problem:
Ihr PHP-Skript berechnet Entfernungen zwischen einem bestimmten Standort und zahlreichen Unternehmensstandorten in einer Datenbank mithilfe der Haversine-Formel. Mit zunehmender Größe Ihrer Datenbank (5.000 Unternehmen) machen Sie sich jedoch Sorgen um die Leistung.
Lösung: Nutzen Sie die datenbankbasierte Entfernungsberechnung
Zur deutlichen Verbesserung Um die Effizienz Ihrer Suche zu verbessern, sollten Sie die Verwendung einer Datenbankabfrage in Betracht ziehen, die die Haversine-Formel direkt einbezieht. Dieser Ansatz umgeht die Notwendigkeit, alle Geschäftsdaten abzurufen und Entfernungsberechnungen in Ihrem PHP-Skript durchzuführen. So geht's:
Mit der HAVING-Klausel von MySQL können Sie einen Distanzfilter auf die Ergebnismenge anwenden:
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:
Durch Ausführen dieser Berechnung in der Datenbank Reduzieren Sie die Datenmenge, die zur weiteren Verarbeitung an Ihr PHP-Skript übertragen werden muss, drastisch. Dieser Ansatz verbessert erheblich die Leistung, insbesondere bei großen Datenmengen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Leistung der Standortsuche in PHP mit einer großen Datenbank optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!