SELECT property.paon, property.saon, property.street, property.postcode, property.lastSalePrice, property.lastTransferDate,
epc.ADDRESS1, epc.POSTCODE, epc.TOTAL_FL
Do you control the database? If you do, you could try adding indexes on the address and postcode columns (anything in the join clause). That should probably speed up the query.
Edit: reread your question.
If the GROUP BY and ORDER BY clauses are slowing it down, I would try adding indexes on the columns referenced in those clauses.
You can do a few things:
CONCAT(property.paon, ', ', property.street)
in the GROUP BY
and the JOIN
(this will speed it up a lot!)HAVING
with epc.TOTAL_FLOOR_AREA > 0
and add it to the WHERE
If you need more help, share en EXPLAIN of your query with us.