2016-12-06 4 views
-1

Я пытаюсь использовать команду MySQL, чтобы обновить таблицу:Есть ли лучший способ запустить MySQL обновления LeftJoin

Update TableA left join 
     TableB -- I am guessing this belongs here 
     on TableA.Key=TableB.key 
    set TableA.column1=TableB.column1 
    where TableA.Column2='XXX';* 

, что я хочу, это обновление записи, что оба матча условие Key и где положение в то время как этот код сделал другие записи только для того, чтобы встретить where where: TableA.Column2 = 'XXX' также изменить

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

есть способ улучшить эту команду;

Заранее спасибо;

ответ

0

Это, как представляется, запрос, который вы хотите:

update TableA a join 
     TableB b 
     on a.Key = b.key 
    set a.column1 = b.column1 
    where a.Column2 = 'XXX'; 

Для этого запроса вы хотите два индекса: TableA(Column2, key) и TableB(key). Эти индексы должны ускорить запрос.

+0

Есть ли причина анонимного нисходящего потока на то, что выглядит как правильный ответ? –

+0

спасибо за ответ, я попробовал, но это занимает больше времени, чем я ожидал, поэтому я стараюсь использовать правое соединение –

+0

@TaroNikkei. , , Даже с индексами? –