У меня есть запрос MySQL, который извлекает длинную длину из базы данных на основе критерия, проверяет, находятся ли эти точки внутри многоугольника, и возвращает точки, находящиеся внутри многоугольника.
Все работает нормально. Проблема в том, что запрос занимает ок. 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..., который произвел
идентификатор | тип_выбора | стол | тип | возможные_ключи | ключ | key_len | ссылка | строки | Дополнительный
1 SIMPLE myTable ALL NULL NULL NULL NULL 137003 Где используется
Есть ли способ оптимизировать запрос, который выполняется на каждой широте и долготе в БД, или это настолько хорошо, насколько это возможно?
Я думаю о том, чтобы сделать выборку в другой таблице, а затем запросить таблицу результатов, но я надеялся, что будет способ улучшить производительность этого запроса.
Если у кого-то есть какие-либо предложения или идеи, я хотел бы услышать их.
Спасибо,
Лакшмиди