Reports working on smaller dataset may not work over large data. Querying data will lead to large table scans, which might not be scalable in long term, considering growing data.
For example, consider a problem statement as follows -
Fetch Stock Balance report of 1000 SKUs in 30 Warehouses, as on X date.
One of the approach would be, take sum of stock ledger entries since beginning till X date, which can be like dealing with millions of entries which will keep on growing. This would then result in lowering performance of the query in inverse proportion with growing data.
In order to enhance reporting performance, one approach could be creating summary tables. Snapshot of report can be captured at specified time and data can be stored in a summary table. Now considering above example of stock balance report, the data can now be fetched from summary table rather than querying a large amount of data. This can help in improving the execution time and performance of the report.