Обновление запроса занимает много времени для запуска

0

Мне нужна помощь с запросом, который я использую (MySQL) для обновления другой таблицы. При запуске вложенного запроса запрос выполняется менее чем за секунду. Но как только я включаю часть обновления, требуется несколько часов. Запрос, который я использую, выглядит следующим образом:

UPDATE sys_reference.outlet_reference OUTREF LEFT JOIN
(SELECT 
    store_code 'storeCode'
,   LEFT(header_value,20) 'CoOrds' 
FROM 
    am_data_warehouse.am_headers 
WHERE 
    action_date = CURDATE()- 1 
AND header_field_id IN (3641, 4937)
) GPSCO 
ON OUTREF.store_code = GPSCO.storeCode 
SET OUTREF.gps_coordinates = GPSCO.CoOrds

Ниже приведена структура таблицы, которая обновляется:

Изображение 174551

  • 0
    Каковы ваши ключи и индексы в обеих таблицах?
Теги:
query-performance
nested-query

1 ответ

1
Лучший ответ

Я думаю, что подзапрос не делает вам никаких выгод. Я думаю, вы можете переписать его для устранения подзапроса.

UPDATE
    sys_reference.outlet_reference AS OUTREF
    INNER JOIN am_data_warehouse.am_headers AS GPSCO ON OUTREF.store_code = 
GPSCO.storeCode
SET
    OUTREF.gps_coordinates = LEFT(GPSCO.header_value,20)
WHERE
    GPSCO.action_date = CURDATE() - 1
    AND GPSCO.header_field_id IN (3641, 4937)
  • 0
    Спасибо за вашу помощь в этом, запустил предложенное обновление по запросу, и мои данные были обновлены в считанные секунды.
  • 0
    @LeonClaassen Не за что. Убедитесь, что есть индекс am_data_warehouse.am_headers.storeCode. Если нет, вы можете еще быстрее ускорить запрос, добавив один в этот столбец.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню