Я не очень хорошо разбираюсь в запросах MYSQL и их оптимизации, поэтому мне нужно немного помочь в этом. Я проверяю таблицу международных городов, чтобы найти 10 ближайших городов, основанных на значениях долготы и широты в таблице.Оптимизация этого очень медленного запроса MySQL
Запрос Я использую для этого заключается в следующем:
SELECT City as city,
SQRT(POW(69.1 * (Latitude - 51.5073509), 2) +
POW(69.1 * (-0.1277583 - Longitude) * COS(Latitude/57.3), 2)) AS distance
from `cities`
group by `City`
having distance < 50
order by `distance` asc
limit 10
(Значения широты долготы &, очевидно, размещены динамически в моем коде)
иногда это может занять около 3-4 минуты зарядки моей среды разработки.
Я сделал какие-либо классические ошибки здесь, или есть гораздо лучший запрос, который я должен использовать для извлечения этих данных?
Любая помощь должна быть принята с благодарностью.
Не могли бы вы предоставить план выполнения? – Jester
Расчеты в выборе обычно медленны, поэтому я думаю, что это ваша проблема. – Jester
см. Http://stackoverflow.com/a/38771805/267540 и http://stackoverflow.com/a/38548557/267540 – e4c5