У меня есть запрос MySQL, который извлекает значения lat long из базы данных на основе критерия, проверяет, находятся ли эти точки внутри многоугольника, и возвращает точки, которые находятся внутри многоугольника.
Все работает нормально,Проблема в том, что запрос занимает ок.20 секунд, чтобы вернуть результат.Есть ли способ оптимизировать этот запрос так, чтобы скорость запроса была выше?
SELECT latitude, longitude
FROM myTable
WHERE offense = 'green' AND myWithin(
POINTFROMTEXT( CONCAT( 'POINT(', latitude, ' ', longitude, ')' ) ) , POLYFROMTEXT( 'POLYGON(( ...bunch of lat longs...))' )
) = 1;
Я запустил EXPLAIN SELECT ..., который произвел
id |select_type |стол |тип |возможные_ключи |ключ |key_len |ref |строки |Extra
1 SIMPLE myTable ALL NULL NULL NULL NULL 137003 Использование где
Есть ли способ оптимизировать запрос, который выполняется на каждой широте и долготе в БД, или это какхорошо, как это получается?
Я думаю о том, чтобы сделать выборку в другую таблицу и затем запросить таблицу результатов, но я надеялся, что будет способ улучшить производительность этого запроса.
Если у кого-нибудь есть какие-либо предложения или идеи, я бы с удовольствием их выслушал.
Спасибо,
Лакшмиди