Точки запроса в данном радиусе в MySQL

Я составил следующую таблицу MySQL для хранения координат широты/долготы наряду с названием каждой точки:

CREATE TABLE `points` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(128) NOT NULL,
  `location` point NOT NULL,
  PRIMARY KEY (`id`),
  SPATIAL KEY `location` (`location`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

Я пытаюсь запросить:

  • все точки в n радиусе мили данной точки;
  • расстояние каждой возвращенной точки от данной точки

Все примеры, которые я нашел, относятся к использованию минимального ограничительного прямоугольника (MBR), а не радиуса. Таблица содержит приблизительно 1 миллион точек, таким образом, эта потребность должна быть максимально эффективной.

9
задан Jethro 27 December 2015 в 22:39
поделиться

2 ответа

Спасибо вам обоим за ответы.

В конце концов я нашел решение на http://www.movable-type.co.uk/scripts/latlong-db.html .

3
ответ дан 4 December 2019 в 21:49
поделиться

Радиус не индексируется эффективно. Вы должны использовать ограничивающий прямоугольник, чтобы быстро получить точки, которые вы, вероятно, ищете, а затем отфильтровать точки за пределами радиуса.

2
ответ дан 4 December 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: