A few additional tips:
1. Don't use "Page M of N" or any other function that requires late-time computation.
2. If you're running through a million records on the back end and you want output to show up quickly, you'd best do as little grouping as possible (even with grouping on the server side).
3. In general, if you've got that big a data source on the back side, the only way you'll get something to show up quickly on the front side is by removing all grouping and sorting from the report so it's a straight data pull. Otherwise, the time requirements for sorting and/or grouping will be demonstrably noticeable to the viewer.
4. Outside of those notes, I heartily concur with the previous poster. Stored procedures on the back side are the way to go; they make most efficient use of the server capabilities and minimize the amount of work required at the client side before Crystal can show the first page.
Richard A. Polunsky
Houston, Texas