Simple Update Join much slower than it should be (MYSQL) 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 &gt; '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 &gt; '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 &gt; '2020'

The field active not part of any index

Table 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 &gt; '2020') but it didn't help. I'm absolutely stumped why this takes so long. Any help is appreciated.
Maybe:
UPDATE A
    SET A.active = 1
    WHERE A.date &gt;= '2020-01-01'
      AND ( EXISTS ( SELECT 1 FROM B WHERE B.id = A.id ) )

What is the datatype of date?  If it is DATE, you were excluding New Year's Day.
I'm assuming that id is the PRIMARY KEY if each table.  But, given that, I must ask why you have two tables with the same PK -- That is usually poor schema design.  (There are exceptions.)  Furthermore, INDEX(id, date) is probably useless.
Needed:  A:  INDEX(date).  Even so, that might be ignored, depending on the data distribution.  Please provide SHOW CREATE TABLE and EXPLAIN UPDATE ...