I should have clarified this by commenting instead of posting an answer, however, as a newbie I am not allowed to ask for more information (i.e. commenting)!!!
Quoting your line "To see who has not been active in a while I run the following compound query:", it appears to me that the correct query in this scenario should have been...
SELECT * FROM members M
where M.ID not in (select distinct memberid from transactions WHERE taDateTime >= '30.06.2013')
The query you have written is going to give you people who are active. Also, it loads the db server with a processing of a few 10,000 * 100,000 records.
If you are indeed looking for people who are NOT active after a certain date, the query I gave you should give you at least 100 times faster results then previous one. I am curious to know the outcome, please let me know in any case. Thanks.