Reporting

Goal Best Practice
Maximizing reporting performance by:<ul><li>Partitioning data to match its likely use</li><li>Minimizing the number of records per object</li></ul> Reduce the number of records to query—use a value in the data to segment the query. For example, query for only a single state instead of for all states. (See Divisions.)
Reducing the number of joins <ul><li>Minimize the number of:<ul><li>Objects queried in the report</li><li>Relationships used to generate the report</li></ul></li><li>De-normalize data when practical—“over de-normalizing” the data results in more overhead. Use summarized data stored on the parent record for the report. This practice is more efficient than having the report summarize the child records.</li></ul><ul></ul>
Reducing the amount of data returned Reduce the number of fields queried—only add fields to a report, list view, or SOQL query that is required.
Reducing the number of records to query <ul><li>Reduce the amount of data by archiving unused records—move unused records to a custom object table to reduce the size of the report object.</li><li>Use report filters that emphasize the use of standard or custom indexed fields. Use index fields in report filters, whenever possible.</li></ul>