I did a little digging on the Lynbunt query & found a small change to the sql changed the query time substantially.
Query time - as is
WHERE YEAR(last_donation_date) = 2013
503 rows in set (2 min 9.19 sec)
WHERE last_donation_date BETWEEN '2013-01-01' AND '2013-12-31 23:59:59'
503 rows in set (25.67 sec)