Faster filters when linked to many cards

Hi Metabase gurus!

We have a dashboard that has around 50 charts and 35 filters. All the charts are basically the same in structure (column charts with top-N grouping) and show various metrics from one source. Its very useful and is popular among data customers.

The cards themselves are pretty fast. However, filters (which are dropdowns) load around 3-5 seconds, sometimes longer. Is there a way to somehow reconfigure the dashboard or metabase itself to make them fast or pre-load in advance?

Thanks for any advice on this.

Are the dropdowns using linked filters? If so, there is a query run to populate the filters. Maybe you can optimize that query with appropriate indexes?

Hi! Thanks for your input. Filters are not linked to other filters.
Most of the dropdowns are connected to related fields but even those that are filled with custom values are slow.

From my research, most of the overhead comes from the need to validate the filter against all cards and all the other filters connected to the cards.
For example, we have a granularity filter that defines period groupings.

Here is how it performs in various configurations:
same dashboard copied with no cards: 0.28s
same dashboard with cards but no mappings: 0.65s
same dashboard with only granularity mappings: 0.94s
granularity values on the live dashboard (so with all the other filters live): about 5.47s

So the main spike comes not from granularity filter but from overhead coming from other filters that are not related to this one at all.

So those timing are to load the entire dashboard with the filters set, or to pull down just one of the filters? If the filters aren’t linked then the settings of one filter won’t affect the others. Check in Table Metadata that the values aren’t related (i.e., foreign key relationship).

What is the app database setup, and do you access Metabase across the Internet (i.e., from home)? Also please post your Metabase version, or better, the diagnostic output from Admin → Tools.

When the dashboard is loading, the Metabase log will output lines like this:

2026-05-13 10:37:22,044 DEBUG middleware.log :: POST /api/dashboard/43/dashcard/371/card/340/query 202 [ASYNC: completed] 324ms (13 DB calls) App DB connections: 7/15 Jetty threads: 4/50 (6 idle, 0 queued) (181 total active threads) Queries in flight: 8 (0 queued); postgres DB 7 connections: 8/9 (0 threads blocked) {:metabase-user-id 1} 

If you want to look at pulldown speed by itself, look for API calls to /api/dashboard/##/params/##/values, like this:

2026-05-13 12:08:53,361 DEBUG middleware.log :: GET /api/dashboard/3/params/83f64db9/values 200 191ms (29 DB calls) App DB connections: 0/15 Jetty threads: 5/50 (9 idle, 0 queued) (174 total active threads) Queries in flight: 0 (0 queued) {:metabase-user-id 1} 

What’s useful to see here is:

  • the timing (the number just after [ASYNC: completed], here 308ms; this is the execution time in miliseconds)
  • How many app DB connections are in use (here 10/15)
  • How many database connections are in use (the number after the ‘DB’, here 8)

A particularly high timing indicates a slow query; try to isolate which card it is, then look at the query and see if you can optimize it. Dropdowns set in Table Metadata to ‘A list of all values’ means Metabase has to send all the values anytime the filter loads. This can take a while if it is near the size limit (100KB total data). These values are cached in the app db. If you don’t actually need the dropdown values, try setting the column to ‘Search box,’ then it doesn’t have to send the values to the browser.

If the number of app DB or warehouse DB connections are large (or for the app DB running into the limit) then you might need to increase the available resources on the Metabase server. Check the log for any syncs & scans running; if the databases don’t change much, consider scheduling the syncs to happen during off hours.

If possible also check database performance metrics, make sure they aren’t getting swamped.

For reference, here’s some initial guidance on dashboard performance.