Как я могу оптимизировать этот пространственный запрос MySQL с помощью MBRIntersects и ST_DISTANCE_SPHERE?MySql

Форум по Mysql
Anonymous
Как я могу оптимизировать этот пространственный запрос MySQL с помощью MBRIntersects и ST_DISTANCE_SPHERE?

Сообщение Anonymous »

Я работаю с таблицей MySQL (около 1,25 миллиона строк). Мне нужно получить строки, в которых и начало координат, и место назначения попадают в радиусные фильтры вокруг двух заданных координат. При большом радиусе отправления и назначения (250 миль) запрос занимает от 4 до 7 секунд.
Вот запрос:
Примечание. Заполнители ? представляют параметры из подготовленного оператора (Java).

Код: Выделить всё

SELECT
Created, Last_Modified, Net_Freight_Charges, Quote_Currency, Origin_Expected_Date,
ST_DISTANCE_SPHERE(Origin_Geolocation, ST_SRID(Point(?, ?), ?)) AS Distance_From_Origin_Meters,
ST_DISTANCE_SPHERE(Destination_Geolocation, ST_SRID(Point(?, ?), ?)) AS Distance_From_Destination_Meters
FROM carrierquote
WHERE Origin_Expected_Date IS NOT NULL
AND Origin_Expected_Date >= ?
AND Origin_Expected_Date  Сканирование диапазона индекса по предложению оператора связи с использованием IDX_Destination_Geolocation поверх (Destination_Geolocation unprintable_geometry_value) (стоимость=38441 rows=36916) (фактическое время=0.349..2426 rows=163927 циклов=1)
Будем очень признательны за любые советы по уменьшению количества строк на ранних этапах запроса, улучшению пространственной фильтрации или переписыванию запроса для повышения производительности. 

Подробнее здесь: [url]https://stackoverflow.com/questions/79842361/how-can-i-optimize-this-mysql-spatial-query-using-mbrintersects-and-st-distance[/url]

Вернуться в «MySql»