Intereting Posts
Рекурсивно менять ключи в массиве Как написать значения, поступающие из ввода формы в json, используя php Стратегия кэширования, когда кеширование становится бессмысленным? Laravel – Соглашения о присвоении имен в базе данных, таблицах и столбцах? Использование плагина поиска CakeDC со связанными моделями как я могу сделать какие-то цифры выше общих дней месяца, как новые числа дневного месяца? Проблема с базой данных, как сохранить изменяющуюся структуру данных PHP: дата "F" с setlocale не работает PHP захват печати / требуется вывод в переменной Хранение файловой структуры в PHP Цикл через двумерный массив Что такое хороший бесплатный набор графиков для PHP? Google API Client "токен обновления должен быть передан или установлен как часть setAccessToken" файлы, загруженные с устройства google drive usin picker, повреждены есть ли альтернатива использованию цикла for для вставки нескольких запросов

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

Я создаю вызов MySQL с помощью PHP, я вычисляю расстояние, используя хаузерский форум:

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? Этот запрос выполняет поиск в таблице с около 1000 записей. Было бы более эффективно выполнять некоторые математические вычисления в PHP, а не SQL? Есть ли лучший способ оптимизировать этот запрос?

Related of "Оптимизация формулы haversine SQL-вызов в PHP"

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

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

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

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