Originariamente inviato da Dascos
Cicli sulle keywords ed estrai in "like" dalle email.
Per fare in modo da non gravare sul server puoi crearti uno script che "cronnizzi", salvando di volta in volta l'ultimo intervallo estratto.
Spiego.
POC
codice:
funzione crea csv {

limite = select primo, ultimo from tabella_limiti;
if !limite {
   limite_inf = 0
   limite sup = 5000
} else {
   limite_inf = primo
   limite_sup = ultimo
}

chiavi = select keyword from tabella_chiavi
foreach chiavi as chiave {
   emails = selet email from tabella_email where email like '%chiave%' limit limite_inf, limite_sup
   email_formato_csv = elabora_email(emails)
   file put chiave.csv => email_formato_csv
}

aggiorna_limit = update tabella_limiti set primo = limite_sup, ultimo = ultimo+limite_sup
}
Questo script lo metti in un crontab e lo fai eseguire ogni...boh...5 minuti?
5.000.000 / 5.000 = 1.000 "cicli" * 5 minuti = 5.000 minuti / 60 = 83 ore = 3 giorni circa.
Se va eguito più frequentemente adatti il cron e ottimizzi il codice, eventualmente
La cosa migliore da fare, è delegare l'operazione ad una (complessa) query che indubbiamente impiegherà un tempo decisamente inferiore