IT depends what you mean with more efficient
what you are doing is querying a mulitple joined set of 4 tables a, b,c, d, with three outer joins and one inner join
If you want it to run faster, you should use indices on the keys.
If you have a buffer problem, you should increase you buffer...