Here is a list of recommended best practices to reduce server processing time and improve performance of the Crystal report.
  1. Run the report and take a look at it's performance using Crystal Report's built-in Performance Information. The Performance Information dialog box can be opened from the Report menu. It displays performance data from the last time the report was run and can show you how long each part of the report, including sub-reports, is taking to complete. It can be extremely useful when trying to determine why a report is running slow.
  2. Reduce the data set returned by filtering for a smaller range of values. For example, instead of running a report for an entire year, try running it for the first 6 months first.
  3. Reports or sub-report can run slowly if there are linking of too many tables. The more tables linked together, the slower the report will become. If you need to display data from multiple tables, try using a subreport to get data from one or two of the tables and storing that data in a shared variable for display later on.
  4. If you are using subreports, the fewer subreports you have, the faster the report will run. Each subreport will hit the database again to gather data. Also, linked subreports will always perform faster than unlinked subreports, because they are being run on a subset of data being passed from the main report, rather than returning all records.
  5. If possible, try moving the report and data export from a network drive to a local workstation. This may help if the Local Area Network is congested or slow.
  6. If you have a large database (>10,000 records), try to use a selection formula to only return those records that you need for the report, rather than having Crystal read all your records.
  7. If you are using a selection formula, make sure that you are not referencing any Crystal functions (ie. ToText, DTStoDate) or formulas. If it is referencing Crystal functions or report formulas, your database will return all records because it does not understand the Crystal functions on the database side. Instead, use your Crystal functions in specific formulas rather than the selection formula.
  8. If you are using text objects, and can avoid inserting database or formula fields inside them, your report will run faster.
  9. Make sure you have plenty of free hard drive space available on the drive that your "SET TEMP=<path>" statement in your AUTOEXEC.BAT file is pointing to. Crystal uses that path to store its swap files as it generates your report. Depending on the complexity of your report, you may require anywhere from 10 to 100 megs of free space to generate your reports.
  10. The more OLE objects you have inserted, the slower the report will run. The bigger or more complex the OLE object is, the slower the report will run.
  11. If you do not want to show sections on your report, try and Suppress Sections (no drill-down) if you don't need to see drill-down information. This will speed up report performance, as hiding a section which will calculate and save drill-down information takes longer than a section that is suppressed (no drill-down).
  12. Make sure that “Use Indexes for Speed” checkbox is marked ON under File, Report Options, other-wise PC database reports will not use indexes to retrieve information, and SQL database reports will return the entire data set before Crystal filters it on the local machine.
  13. Creating and using a database view from a database query can encapsulate and simplify the data thus improving report performance significantly.
  14. Creating a stored procedure or parameterized stored procedure, and reporting off that, is by far the quickest way to retrieve a data set from the server.