Delete in big table data all data, where foreign_id in other table didn't exist
This should do it:

delete from table_a where article_id not in (select id from article)


A variant that maybe faster in older versions

delete a.* from table_a a
left join article on a.article_id = article.id
where article.id is null


Oh and regarding the second part of your question...  You may want you put another column on table_a,  like checked that you can set.  And of course you need to put an index on article.id. 

It occurs to me that if you are going to be deleting a good fraction of the records then it will be faster to simply make a new table which is a subset of the original.

create table table_b as 
select * from table_a where article_id in (select id from article)


Mmm... actually given the problem with old version IN optimization this is probably the best query to go with

create table table_b as 
select  a.id, a.article_id, a.text
from table_a a
inner join article on a.article_id = article.id


And just make sure you have an index on article.id (an index on table_a.article_id won't hurt either)

(just an addendum regarding the changing status of IN clause optimisation - I cannot find recent specific benchmarks on googleland but relevant discussion is here for Mysql and Maria