Glad to hear it! That's 10x improvement... Let's see if we can get another 10x. ;-)
If you haven't tried it yet, I would try the compound index, that is one index covering all the columns you join on in the same order as you use them in your query. In your case, one index covering expense, code, name, price, charges and url in that order.
How many transactions do the tables get?
Also if you could post your table definitions I might be able to provide more help.