Использование базы данных mysql. У меня есть столбец "latlong", который является точечным типом с пространственным индексом. Я хотел бы получить ближайшие места в 4 милях, ближайших к широте и долготе.
Пока у меня это...
SELECT `postcode`,county, ( 3959 * acos( cos( radians(51.585738) ) * cos( radians( x(GeomFromText(astext(latlong))) ) ) * cos( radians( y(GeomFromText(astext(latlong))) ) - radians(-0.260878) ) + sin( radians(51.585738) ) * sin( radians( x(GeomFromText(astext(latlong))) ) ) ) ) AS distance
FROM uk_p HAVING distance < 4 ORDER BY distance LIMIT 0 , 20
У меня всего 2900 записей, и это занимает примерно 0,0277 секунды. Есть ли способ оптимизировать этот запрос, так как я беспокоюсь, что по мере роста базы данных этот запрос будет медленнее...