Я ищу выбор круга по расстоянию. У меня есть одна точка с широтой & долготы, и я хочу искать, если у меня в базе данных есть несколько точек вокруг меня. И да, это должен быть круг!Медленная производительность при запуске многократного сложного пространственного запроса в MySQL
Я использую этот пункт в запросе (я только Google, я не могу сделать математику):
((6373 * acos (cos (radians(48.568962)) * cos(radians(X(coords))) * cos(radians(Y(coords)) - radians(6.821352)) + sin (radians(48.568962)) * sin(radians(X(coords))))) <='0.2')
0,2 = 200 м
- Я использую тип данных POINT
- Да, у меня есть Пространственный индекс на это
- Да, я пытаюсь использовать «пространственную» функцию, но это не возвращает круг, он возвращается некоторые OVAL и мне нужен ТОЧНЫЙ круг
Этот пункт «круг» принимает очень, очень, очень долгое время для всех таблиц. Когда я использую метод OVAL PROTITIAL foos. Это может быть 0,1 с, и это здорово! Но мне нужен круг, и это занимает 17 секунд, LOL.
Вы можете мне помочь? Большое спасибо, ребята!
EDIT: пространственные функции означает, что некоторые, как это: (. Таблица структура)
WHERE ST_Contains(ST_Buffer(
ST_GeomFromText('POINT(12.3456 34.5678)'), (0.00001*1000)) , coords) <= 1 /* 1 km */
EDIT 2:
Я ожидаю 10 строк из этой таблицы, конечно У меня есть показатели по wz_uuid
select a....., b.... from table_1 a left join table_2 b on a.wz_uuid=b.wz_uuid
И это не только 2 таблицы, у меня есть 11 таблиц * 2, как это. (еженедельные резервные копии базы данных). Первые таблицы (_1) имеют 0-4000 строк, 2-11 - 300k + строк.
Все индексы актуальны, а также типы данных &.
wz_uuid & id - unique, btree index
others - btree indexes
coords - spatial index
Да, вы должны использовать геопространственную функцию, чтобы избежать использования дорогостоящей формулы Haversine. –
Опубликуйте свои таблицы и сообщите нам ожидаемый результат. то, как вы используете геопространственные функции, индекс не может использоваться. – e4c5
Почему я не могу его использовать? Я уже тестировал его, но это овал, мне просто нужна правильная функция, которую я считаю для круга. Я могу показать вам таблицы, но это просто обычная оптимизированная таблица с 30 столбцами, и мне все они нужны, потому что мне нужно сделать строку AVG. –