@freeeeez

Как оптимизировать запрос с ST_CROSSES?

Mariadb 10.4.8
Ищу совпадение с пользовательскими точками, заданы две точки, ищу по маршрутам из БД (поле line), содержит ли этот маршрут данную, точку. Поиск выполняется через построение буфера вокруг точки и наличия пересечения линии и полигона.
Запрос:
SELECT * FROM search WHERE ST_CROSSES(line,ST_BUFFER(ST_GEOMFROMTEXT('POINT(55.7562903 37.6170739)'),0.2)) and ST_CROSSES(line,ST_BUFFER(ST_GEOMFROMTEXT('POINT(59.93427559999999 30.335136)'),0.2)) LIMIT 0,1

На 100 000 записях этот запрос выполняется за 1 секунду. Можно ли как то ускорить или это предел? Есть ли какая-то другая возможная реализация поиска пересечения двух точек и линии, которая работает быстрее?
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
zabudkin
@zabudkin
Инженер-системотехник, программист, админ, ТПУ!!!!
Быстрее не будет? :

SELECT * FROM search WHERE ST_CROSSES(line,ST_BUFFER(ST_GEOMFROMTEXT('POINT(55.7562903 37.6170739)'),0.2)) and ST_CROSSES(line,ST_BUFFER(ST_GEOMFROMTEXT('POINT(59.93427559999999 30.335136)'),0.2)) FETCH FIRST 1 ROWS ONLY
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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