Я использую формулу Хаверсина в PHP, как показано ниже:
$result=mysqli_query($mysqli,"SELECT *,( 6371 * acos( cos( radians({$lat}) ) * cos( radians( `latitude` ) ) * cos( radians( `longitude` ) -radians({$lon}) ) +sin( radians({$lat}) ) * sin( radians( `latitude` ) ) ) ) AS distance FROM `places` HAVING distance <= {$radius} ORDER BY distance ASC") or die(mysqli_error($mysqli));
Внутри цикла выборки Haversine у меня есть запрос, который выполняет итерации по результатам haversine для выбора записей, которые соответствуют идентификаторам, возвращаемым формулой haversine. Запрос выглядит следующим образом.
while($row = mysqli_fetch_assoc($result))
{
$rest_time=$row['id'];
$result1=mysqli_query($mysqli,"SELECT * FROM my_friends WHERE personal_id='".$personal_id."' AND id='".$rest_time."'") or die(mysqli_error($mysqli));
//Some operations here
}
HOw можно выполнить операцию Join, чтобы объединить эти запросы в один? Было бы разумно сделать это, с оптимизационной точки зрения, если вторая таблица имеет, как и 50 тыс. Пользователей, а первая таблица имеет почти 1000 записей?