How do I use subquery on the same table in MySQL?
You could try to use EXISTS clause instead of IN, since its usually less performance expensive:

  DELETE FROM TABLE T_delete
  WHERE EXISTS (SELECT 1
                FROM TABLE t_join
                WHERE value_was IS NULL
                AND T_delete.ID1 = t_join.ID1) 
  OR EXISTS (SELECT 1
                FROM TABLE t_join
                WHERE value_was &lt;= value_now
                AND T_delete.ID2 = t_join.ID2);


Not sure if it would improve the performance, but you could also try to split this query into two instead of using a OR.

There's more info about optimizing queries with EXISTS here.