• 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.