Я использую строку кода, чтобы определить ограничивающую рамку, окружающую потенциальные результаты, тогда вы выполняете свой запрос только для подмножества данных.
Например, максимальный СПГ, максимальный лат, минимальный СПГ, минимальный лат.
В противном случае ваш оператор SQL будет выполняться для КАЖДОЙ записи в вашей таблице.
Наше приложение в настоящее время имеет 28000 местоположений, поэтому ОГРАНИЧИТЕЛЬНАЯ рамка является ОЧЕНЬ необходимой!
class Geo{
function RadiusCheck($lat, $lng, $miles) {
$EQUATOR_LAT_MILE = 69.172;
$maxLat = $lat + $miles / $EQUATOR_LAT_MILE;
$minLat = $lat - ($maxLat - $lat);
$maxLng = $lng + $miles / (cos($minLat * M_PI / 180) * $EQUATOR_LAT_MILE);
$minLng = $lng - ($maxLng - $lng);
$result['minLat'] = $minLat;
$result['maxLat'] = $maxLat;
$result['minLng'] = $minLng;
$result['maxLng'] = $maxLng;
return $result;
}
}