There aren't that many records, and to take 10 minutes just to return the data, sounds like you are combing through a huge number of records, and to take 20 minutes to display, again implies that the report is very complex...I would suspect subreports, perhaps several.
Subreports can kill a report's performance as they are an additional hit to the database.
Also is the report joining to the tables or is it running a stored proc. I always advise a stored proc; a) more flexible in what you can do, b) it runs in SQL which is optimized for set based data manipulation, instead of Crystal that basically reads the data one line at a time and changes things/accumulates them.