Переписывание запроса на ОБНОВЛЕНИЕ без использования ВНУТРЕННЕГО СОЕДИНЕНИЯ

#mysql #join

#mysql #Присоединиться

Вопрос:

У меня есть вопрос:

 UPDATE table_1 set field_1 = 1 where field_2 IN 
(SELECT field_2 from table_2 where field_3 = 1)
 

Однако это занимает МНОГО времени при большой базе данных (> 2000 мс). Есть ли способ переписать этот запрос с помощью JOINs, чтобы отказаться от использования IN?

ПРИМЕЧАНИЕ: Есть индексы для field_1 и field_3, однако это не помогает запросу. Это использование MySQL.

Ответ №1:

 UPDATE table_1, table_2
    SET table_1.field_1 = 1
    WHERE table_1.field_2 = table_2.field_2
        AND table_2.field_3 = 1
 

Ответ №2:

Необходимый код приведен ниже,

 UPDATE t1 
set field_1 = 1 
from table_1 t1
join table_2 t2
    on t1.field_2 = t2.field_2
where t2.field_3 = 1
 

Ответ №3:

Протестировал этот код.

 UPDATE table_1 t1 
 INNER JOIN table_2 t2 
  SET t1.field_1 = 1
WHERE t1.field_2 = t2.field_2
AND t2.field_3 = 1;
 

Приветствия!