Определение обеих таблиц (это просто пример, я не могу объединить таблицы, нет):
CREATE TABLE `MyTable`(
`id` int NOT NULL,
`a` varchar(10) NOT NULL,
`b` varchar(10) NOT NULL,
`state` tinyint NOT NULL,
PRIMARY KEY (`id`)
);
Цель: обновить записи MyTable1, у которых нет общего значения, с "a" ИЛИ b "из MyTable2.
Мое решение:
update MyTable1 as t1
inner join MyTable2 as t2 on (t1.a != t2.a and t1.b != t2.b)
set t1.state=3;
Я в основном объединяю таблицы, в которых нет совпадающих столбцов, чтобы я мог обновлять состояние таких записей.
Моя проблема: это медленно. Это заняло 6 секунд с 5000 записей в MyTable1 и 3000 записей в MyTable2.
Вопрос: Может ли это быть немного быстрее (если ваше решение пойдет намного быстрее, я тоже его приму;)?
РЕДАКТИРОВАТЬ: мое "решение" на самом деле не работает вообще.