---
schema_version: "1"
id: 4ea0861a08d6ee4e1f158e372b962f24231fd7def84635cd0e48452a1ad91015
title: Best Practices for CRM Analytics Dashboard Performance
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/analytics/264-0-0/bi_dashboard_performance.md
canonical_url: https://help.salesforce.com/s/articleView?id=analytics.bi_dashboard_performance.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 60f45cf83ccb8b830101026156d996bd6f76ec7b5360fc430b8da32bd1468fb6
description: Design dashboards that load quickly. Fast dashboards keep users engaged and reduce load on your org.
products:
  - CRM Analytics
  - Cross Cloud
release: "264"
---
# Best Practices for CRM Analytics Dashboard Performance

Design dashboards that load quickly. Fast dashboards keep users engaged and reduce load on your org.

## Best practices

- Limit the number of widgets and queries on a page. Every query adds load time. Keep each page to six or fewer queries where you can.
- Split content across pages so that only the default page's queries run on load.
- Show summary data first, and let users drill down for details instead of loading all data initially.
- Filter early. Reduce the rows a query returns by applying filters and using selection-driven results. Filter and group before projection, and remove redundant filters.
- Combine simple KPI queries that share a dataset into one query with multiple measures.
- Use global filters instead of selection-based filters to apply one filter across queries in a single pass.
- Reuse results across widgets with faceting and bindings instead of running duplicate queries.
- Query only the fields and groupings that you need, and avoid high-cardinality groupings where you can. Reference multi-value fields only in filters, not in groupings.
- Precompute derived fields in your recipe rather than at query time, and reuse datasets instead of creating a new one for each dashboard.
- Split very large dashboards into a series of linked dashboards.
- Keep row-level security efficient. Design security predicates and sharing inheritance to filter data without adding heavy overhead.
- Build and test in a sandbox before you deploy to production.

## Measure and tune

Use the [Dashboard Inspector](https://help.salesforce.com/s/articleView?id=analytics.bi_dashboards_inspector.htm&release=264.0.0&type=5 "Before you finalize the dashboard, run a performance check on the dashboard and its queries to ensure that everything is running optimally. The dashboard inspector identifies different types of bottlenecks, such as slow queries and networks, and provides recommendations to improve performance. Because dashboard layouts can contain different widgets (and queries), run the inspector on each layout. If a dashboard contains multiple pages, you can run the inspector for all pages. The inspector initially provides results only for the current page.") to see how long queries take and to find the widgets that slow a dashboard down. Optimize the slowest queries first, and then re-measure.

#### See Also

- [Optimize a Query](https://help.salesforce.com/s/articleView?id=analytics.bi_dashboard_step_optimize.htm&release=264.0.0&type=5 "Queries can slow down your dashboard. Run a performance check on the queries to ensure that they’re running optimally. CRM Analytics identifies query bottlenecks and provides recommendations to improve query performance.")
- [Optimize Dashboard Performance](https://help.salesforce.com/s/articleView?id=analytics.bi_dashboards_inspector.htm&release=264.0.0&type=5 "Before you finalize the dashboard, run a performance check on the dashboard and its queries to ensure that everything is running optimally. The dashboard inspector identifies different types of bottlenecks, such as slow queries and networks, and provides recommendations to improve performance. Because dashboard layouts can contain different widgets (and queries), run the inspector on each layout. If a dashboard contains multiple pages, you can run the inspector for all pages. The inspector initially provides results only for the current page.")