This is a simple Update Join that updates only about 100 rows:
Update A INNER JOIN B using(id) SET A.active = 1 WHERE A.date > '2020'
This takes about 30 seconds to run, despite the fact that:
This query updates the same 100 rows and takes milliseconds to run:
Update A SET active = 1 WHERE date > '2020'
The join condition is fast, this query does the same join and takes less than a second
SELECT * FROM A INNER JOIN B using(id) WHERE A.date > '2020'
The field
active
not part of any indexTable A has an index on (id, date), and table B has an index on id.
I tried putting the where condition in the join (using on date > '2020') but it didn't help. I'm absolutely stumped why this takes so long. Any help is appreciated.
using(id)
In commonid
is primary key. Does it is not in your tables? – Akina Sep 1 '20 at 5:04B
for? To limit which items are to be setactive
? – Rick James Sep 2 '20 at 17:35