physics - 1:16 am on Nov 19, 2008 (gmt 0) (I'm assuming you don't insert data nearly as often as you extract it.)
Have you tried the MySQL query cache? That might speed up step 3.
The query cache stores the text of a SELECT statement together with the corresponding result that was sent to the client. If an identical statement is received later, the server retrieves the results from the query cache rather than parsing and executing the statement again.
(I'm assuming you don't insert data nearly as often as you extract it.)