Ответ 1
Пока у вас есть подходящие индексы, это должно работать нормально:
UPDATE table_a
SET
column_a_1 = (SELECT table_b.column_b_1
FROM table_b
WHERE table_b.user_name = table_a.user_name )
, column_a_2 = (SELECT table_b.column_b_2
FROM table_b
WHERE table_b.user_name = table_a.user_name )
WHERE
EXISTS (
SELECT *
FROM table_b
WHERE table_b.user_name = table_a.user_name
)
UPDATE в sqlite3 не поддерживает предложение FROM, что делает это немного больше работы, чем в других СУБД.
Если производительность не является удовлетворительной, другой вариант может заключаться в создании новых строк для table_a, используя команду select и join with table_a во временную таблицу. Затем удалите данные из таблицы_a и повторно запишите из временного.