У меня есть 2 таблицы, TABLE1 и TABLE2 каждый с несколькими миллионами строк. Столбец в TABLE1 обновляется на основе идентификаторов с определенной функцией в TABLE2.Производительность UPDATE и двух таблиц в MySQL
Может кто-нибудь объяснить мне, почему второе решение ниже занимает 30 секунд, в то время как первое решение даже не заканчивается через 5 часов? Я думал, что код с необходимостью создания новой таблицы и ее удаления после завершения обновления не является хорошим стилем кодирования. Но в этом случае он намного быстрее. Есть ли рекомендация?
1.) принимает навсегда:
UPDATE TABLE1 SET TABLE1.MYCOLUMN = 1 WHERE TABLE1.ID IN (SELECT distinct(ID) FROM TABLE2 where ....);
2.) займет 30 секунд:
CREATE TABLE TABLE3 AS (SELECT distinct(ID) FROM TABLE2 where ....); ALTER TABLE TABLE3 ADD primary key(ID); UPDATE TABLE1 SET TABLE1.MYCOLUMN = 1 WHERE TABLE1.ID IN (SELECT * FROM TABLE3);
Обозначены ли ваши колонки? –
Сколько различных идентификаторов по сравнению с фактическими идентификаторами, возвращаемыми из подзапроса? – Bohemian