Оптимизация haversine SQL формулы звонит в PHP

Я создаю вызов MySQL с помощью PHP, я вычисляю расстояние с помощью haversine forumula:

SELECT name, id,
   (6371 * acos(cos(radians(' . $lat . ')) 
   * cos(radians(geoname.latitude)) 
   * cos(radians(geoname.longitude) - radians(' . $lon . ')) 
   + sin(radians(' . $lat . ')) 
   * sin(radians(geoname.latitude)))) AS distance 

Мой вопрос; лучше сделать все это вычисление в SQL? Этот запрос ищет таблицу приблизительно с 1 000 записей. Было бы более эффективно сделать часть математики в PHP, а не SQL? Существует ли лучший способ оптимизировать этот запрос?

10
задан Alex 9 February 2010 в 03:06
поделиться

2 ответа

Вы используете формулу сферического закона косинусов , а не Формула Хаверсина (которая немного медленнее).

Выполнение математических расчетов в MySQL, вероятно, будет намного быстрее, я советую вам прочитать этот вопрос Я задал некоторое время назад, что касается оптимизации скорости, вам обязательно следует прочитать превосходный Geo Proximity Search with Статья MySQL , обратите особое внимание на страницы 8-14 и 19 .

4
ответ дан 4 December 2019 в 03:16
поделиться

Чтобы получить сверхбыстрый индексатор MySQL, ознакомьтесь с Sphinx . Он очень быстро находит то, что вам нужно в вашей базе данных MySQL, и автоматически выполняет расчеты местоположения / расстояния.

Учебное пособие: Географический / пространственный поиск с использованием поиска Sphinx и PHP

2
ответ дан 4 December 2019 в 03:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: