SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.08.2015 12:32:40

да хоть Вася
Участник
Зарегистрирован: 17.08.2015
Сообщений: 1

Поиск по двум ключам ... не все так просто.

Объясняю ситуацию. Исходные данные: координаты места нахождения. База данных с названием аэропортов и их координатами. Задача - найти ближайший аэропорт к месту нахождения.

На первый взгляд элементарное решение:

SELECT * FROM `airport` WHERE `lon`>='45.007693' and  `lat`>='38.786200' ORDER BY `lon`,  `lat` LIMIT 1

потом так же с меньше и выбор ближайших из двух. НО! Такая сортировка не сработала. Потом понял почему.

Господа опытные SQLщики - помогите решить задачу! Как с меньшими нагрузками на сервер (в базе 10 000+ записей) сделать выборку записи координаты которой максимально близки к заданным.

Неактивен

 

#2 19.08.2015 14:34:27

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Поиск по двум ключам ... не все так просто.

Формула для расстояния до точки выглядит иначе. Если сортировать по этой формуле, то будет полный перебор всех строк таблицы. Для 10 тысяч это не смертельно, но и не быстро. Чтобы ускорить, нужно поменять логику. Например, можно перебирать не все аэропорты, а только те, у которых широта и долгота отличается от искомой не более, чем на 15 градусов.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson