Crystal Reports 2008 -> Performance Improvement Techniques
Following are the steps to be taken care of while designing the crystal report to improve the performance of the designed crystal report:
1) Using a command Object/Stored Procedure as the data source will be faster than using crystal report to link tables or views.
2) Remove unused tables, unused formulas and unused running totals from the report.
3) Whenever possible, limit records through selection, not suppression, meaning use conditional formulas to return a desired field result, instead of using suppression to eliminate unwanted records.
4) If the database is of large size try to use a selection formula within the report to only return those records that you need for the report, rather than having crystal read all the records.
5) If a selection formula is used in the report, make sure that no reference to any crystal functions (i.e. totext, cDate etc) or any other formula is there. If it is referencing crystal functions or report formulas, the database will return all records because it does not understand the crystal functions on the database side, hence filter at database level if possible or use SQL Expression to achieve it, as SQL Expressions are always handled on the database whereas formulas are handled on the report level. Use the Crystal functions in specific formulas rather than the selection formula.
6) Using Indexes for faster data retrieval also improves the performance of the reports. This can be achieved by using the option under menu File|Report Options, “Use Indexes or server for speed”.
7) The fewer sub reports in the report, the faster the report will run. Each sub report will hit the database again to gather data. Preferably use the “On Demand Sub Reports” instead of normal sub reports. Since using the normal sub reports will be a cost factor to retrieve the data from the data source. Also, Linked sub reports will always perform faster than unlinked sub reports, because they are being run on a subset of data being passed from the main report, rather than returning all records.
8) While using text objects, avoid inserting database or formula fields inside them.
9) If some sections are not required to be displayed on the 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).
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.