Some tricks might be available depending on our database, and on the number of records in the B table. This kind of query is called "anti-join", you might be able to google for some tricks available for your database.
You said table A has 5 million records earlier. If it actually has less records than B, and you're only interested to see records from A that do not have corresponding records in B, I'd use:
Make sure B.abc column is indexed.