Доброго день всем,Обновления географическая информация из другой таблицы MySQL
У меня есть проблемы с производительностью здания следующего обновления:
Таблица POI (точки интереса) содержит 10 миллионов записей с полями для оба долготы и широта (выдержка из планеты OSM)
Таблица города содержит 145000 записей большинства городов мира также с полями для обоих долготы и широты
Я хотел бы связать внешний ключ CITY_ID (не вы данные t в этом поле) в таблице POI к основному идентификатору в таблице города. Когда это будет сделано, я смогу связать все мои POI с городом. Я пробовал обратное геокодирование, но оказалось, что это плохой опыт, и я не вижу, как я мог бы изменить геокодирование 10 миллионов записей, таким образом, моя ставка, чтобы взять ближайший город к каждой POI. Но похоже, что мой SQL-запрос берется навсегда на моем новом Macbook Pro 2015 с 16 играми или оперативной памятью. Существует что-то я не делаю здесь ... Все L и длинные поля индексируются в базе данных MySQL
Я пробовал следующий запрос, чтобы сделать так:
update poi
set (poi.city_ID, poi.distance) =
( select city.ID,
MIN(111.045* DEGREES(ACOS(COS(RADIANS(poi.latitude))
* COS(RADIANS(city.latitude))
* COS(RADIANS(poi.longitude) - RADIANS(city.longitude))
+ SIN(RADIANS(poi.latitude))
* SIN(RADIANS(city.latitude))))) AS distance_in_km
FROM city
)
Halp!
Cheers
Норма.
Кажется, что для использования пространственных функций мне нужно преобразовать таблицу из Innodb в MyIsam с помощью этой команды: ALTER TABLE poi ENGINE = MYISAM; но проклятый стол остается с Innodb? Что за ??? Или я мог бы обновить с MySQL 5.6 до 5.7, чтобы иметь пространственные функции с InnoDB. Не уверен, что 5.7 стабильно, но ... – Nuuzee
Хорошо ... Я нахожусь здесь! :) Я сделал следующее для своей таблицы: создайте индекс idxfaster на poi (широта, долгота); И создать индекс idxfasterlong на poi (долгота); Я также добавил некоторые «WHERE» в моем запросе (ограничивающая рамка). Запрос длился от 3 секунд до ... (барабанный ролл) 0,3 секунды !!! Да ! – Nuuzee
Глупо мне ... Заявление об обновлении не заняло o.3 сек !!! Я просто запросил таблицу с помощью простого выбора и пары жестко закодированной долготы и широты, чтобы увидеть, как долго выполняется один запрос :) Теперь я попробую обновление. Будьте на связи – Nuuzee