The performance of Crystal reports is linked to a number of different things. The one with the most impact is what SQL is executed in the Crystal Report.
If you look at the layouts provided by default with B1P&D they are optimized to have the fastest SQL possible. This is done by handwriting the SQL, avoiding pulling two many records and in general only pull the things required in the layout.
When trying to speed up the Crystal report there are a number of things to check:
- Check that the SQL only pulls the minimum required data.
- Avoid statements like "SELECT * FROM XX".
- Avoid expensive JOINS if they are not needed and make sure that the JOINS have a WHERE condition
- Remember to add a WHERE condition to filter the result data
- In general, try running the SQL in a management studio and check the performance and that they only return the expected results
- Check that no printer is defined:
To check if the performance is a general issue on the machine or is report specific please try running one of our default layouts. If they perform faster than your custom layout then you will need to look into optimizing your layout by improving the queries in the report.
We have done many performance optimizations in our code and in general, all the time used when launching a Crystal Report is due to the Crystal runtime doing work.
Note: The first Crystal run will always be slower than subsequent runs as the first run loads the Crystal runtime.
B1P&D/Universal Functions options to increase performance
If you want to get the best performance you can ask B1P&D/Universal Functions to bypass some of the steps it normally does. To have the best compatibility we update the connection info on the Crystal Report to make sure that it can connect to the database. This takes a certain amount of time and to speed up this process you can decide to use the option "As in report" or "This database"
When using "As in report" the Crystal will need to be connected to the specific database and will only work in the specific database. Both options set fewer options on the Crystal and require that the Crystal is well made using the best practice connection types.