Try this (untested):
select * into #t
from table1
delete a
from #t a
inner join table2 b
on b.number = a.NEW_NUMBER
update a
set a.Flag = 0
from table1 a
inner join #t t
on t.NEW_NUMBER = b.NEW_NUMBER
inner join table2 b
on b.number = t.OLD_NUMBER
You need index on number column on table2.