Оптимизировать запрос MySQL - обновить таблицы JOIN 2 - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть 1 большая таблица «A» (миллионы строк), и я хотел бы обновить один столбец на основе данных другой «маленькой» таблицы «B», только если «pack_id» из TableA = «hello».

Это мой запрос:

    UPDATE tableA JOIN (SELECT DISTINCT tableB.destino, tableB.estado from table2) as tableB ON tableA.email = tableB.destino
    SET tablaA.estado = tableB.estado
    WHERE tableA.pack_id = "hello";

Этот запрос занимает очень много времени.Настолько, что иногда его даже не удается завершить.

Есть ли способ оптимизировать этот запрос?

Спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

Можете ли вы избежать SELECT DISTINCT?

UPDATE tableA a JOIN
       tableB b
       ON a.email = b.destino
    SET a.estado = b.estado
    WHERE a.pack_id = 'hello';

Тогда для этого запроса вы захотите индексы a(pack_id, email) и b(destino).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...