E' corretto che per ogni email che devo inviare devo controllare se tale email non è tra le email escluse?
no non è corretto, tu devi "estrapolarti" la lista delle email da inviare filtrando PRIMA quelle da non inviare e poi facendo il ciclo di invio...ergo ti fai una select nel db e ti ripeschi le email che ti servono... Il tempo per ottenere risposta dalla query dipende molto dalla query stessa, tempo che può essere "lungo" in caso di funzioni ricursive o query su campi non indicizzati... solo che se hai 2000 miseri record, puoi scrivere la query male quanto vuoi ma più di tanto non dovresti far danni magari se diventano 500.000 ti poni il problema dei tempi della query

una soluzione per evitare il filtraggio al volo sono le liste di invio, quindi associ le email alle liste e poi selezioni tutte le email appartenenti alla lista che ti interessa (quindi una query molto più semplice, anche se quella "al volo" dovrebbe essere assai semplice lo stesso)