Optimizing Report Performance
If you have worked with reporting applications before, there is a usually a bit of time spent on optimizing report performance - users are not happy with reports that run for three minutes, let alone three hours. Over the years, there have been significant enhancements within the Crystal Print Engine itself that have improved performance and cut down on processing time, but the majority of poor report performance does not lie within the Report Designer, but rather in how the report is designed and in the underlying data.For example, if you have a report that has been developed across an Oracle table that contains 500,000 rows of data, the report is going to take a while to run, regardless of whether you are using Crystal Reports.NET or just submit a SQL Statement from a PL/SQL command prompt. If you believe that a report's performance could be improved, ask your DBA or architect to review the tables, views, and other data impedimenta that you are using in order to verify that you have used the correct primary and foreign keys, and that you have taken the most direct route to join tables in your report.Following on from that, you also may want to take the SQL that Crystal Reports.NET generates (right-click on your report and select Database | Show SQL Query) and paste it into SQL*Plus, Query Analyzer or any other SQL query tool supported by your database platform and see how long it runs. Your DBA could also provide suggestions on ways to improve the SQL statement generated and you can then use the optimized SQL as the basis for your report.
With Crystal Reports.NET itself, there are a couple of options that can help with performance - to view these options, right-click on your report and select Report | Report Options.There are two options in this dialog that can aid with performance. The first, Use Indexes on Server For Speed, for use with databases that use indexes, will use the index on the database server to sort and retrieve records faster than if the index was not used. The second option, Perform Grouping on Server, for reports that have groups, will push the grouping back to the database server, providing that the details within your report are suppressed (we can't show detailed records in the report, since it actually changes the SQL statement and uses a GROUP BY clause).