Die nächsten x Standorte im Umkreis eines durch Latitude/Longitude gegebenen Punktes finden in Mysql

Hat man in einer Tabelle eine Menge von Standorten, welche durch deren Latitude und Longitude definiert sind, kann man die einem gegebenen Punkt am nächsten gelegenen Standorte folgendermaßen ermitteln:

Angenommen wir haben eine Adressen-Tabelle mit einer Menge an Geschäften, deren Standort durch die Spalten lat und lng gegeben ist. Weiters habe ich die aktuellen Koordinaten aus der Standortermittlung (z.B. Handy-Lokalisierung) in $lat und $lng. Nun möchte ich die 10 am nächsten zu meinem aktuellen Standort gelegenen Geschäfte suchen und dem Benutzer anzeigen. Diese können mit folgendem SQL-Statement rausgesucht werden:

// $lat, $lng enthalten die Koordinaten des gegebenen Standortes

$sql = 'SELECT a.*, 
 ((ACOS(SIN( ' . $lat . ' * PI() / 180) * SIN(lat * PI() / 180) 
  + COS(' . $lat . ' * PI() / 180) * COS(lat * PI() / 180) * COS((' . $lng . ' - lng ) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance
FROM address a 
ORDER BY distance asc
LIMIT 10';