I don't think the temporary table is needed here since you're just querying one table.  I generally use the temporary table pattern so I can do multiple queries each with a join to a different table but just query (and sort and filter) the main table once.  If you don't need to do that then the temporary table is just overhead.