У меня есть запрос, который корректно возвращает строки в пределах X миль от заданного Point()
в порядке наименьшего расстояния первым, но у меня возникают проблемы при оптимизации запроса, который в настоящее время занимает 6-8 секунд, чтобы вернуть 10 строк из таблицысодержит около 250 тыс. строк.
Столбец geometry
Location
уже имеет пространственный индекс.
Мой текущий запрос:
SELECT *, ROUND(ST_Distance_Sphere(Location, ST_GeomFromText('POINT(lng lat)', 4326)) / 1609.344, 2) as DistanceFromTargetInMiles
FROM Business
-- within 5 miles
WHERE ST_Distance_Sphere(Location, ST_GeomFromText('POINT(lng lat)', 4326)) /1609.344 < 5
-- show closest results first
order by DistanceFromTargetInMiles
asc LIMIT 10
Что я могу сделать, чтобыулучшить скорость этого запроса?Это MySQL 8.0.1.3