The Top 10 network admin screens read view counts across every active site in the network, so they do more database work than the equivalent single-site screens. Version 4.5.0 changed how those screens query the database.
This article describes what changed, what it is worth on a real network, and how to measure it on your own. Single-site installs see very little of it. Networks with many sites are where it shows.
Table checks now come from a cached option
Every Top 10 admin page used to confirm the plugin’s four tables existed before rendering:
That is four uncached queries on every admin page load. They now come from a versioned tptn_tables_installed network option instead.
The Tools page is the exception. It still runs the live checks, because that screen reports table status and needs the current answer rather than a cached one.
The network popular posts query runs in two phases
The network dashboard query used to join the entire daily table as a subquery, then group the result:
Wrapping dp_date in DATE() means no index can be used for that comparison, so the subquery scans the daily table however large it is.
The query now orders first and fetches second. Ordering by total views reads the overall table directly:
Ordering by daily views pre-aggregates only the selected date range, using an index-friendly range comparison in place of the DATE() calls:
The second phase then fetches the other count for the surviving (postnumber, blog_id) pairs only.
On the test network, the query plans used idx_cntaccess for total ordering (cost 30.7, 304 estimated rows) and an idx_dp_date range scan for daily ordering (cost 5.21, 11 estimated rows).
Historical tabs and Tools statistics
Historical dashboard tabs load on demand rather than all at once, so opening the dashboard no longer pays for tabs you do not look at.
The Tools page uses estimated row counts and direct table probes for popular post data instead of exact counts across every site in the network.
Measured results
Captured on 2026-09-01 against a local test network running WordPress 7.1 and Top 10 Pro, with Query Monitor 4.0.7. Three sites were active. Each page was loaded ten times with fresh sequential reloads, and the figures below are Query Monitor values.
Before the changes:
| Page | Server mean / median (s) | Server range (s) | DB mean (s) | DB queries | Top 10 queries | SHOW TABLES |
|---|---|---|---|---|---|---|
| Site dashboard | 0.4224 / 0.3942 | 0.3611–0.6781 | 0.0288 | 811 | 26 | 4 |
| Network dashboard | 0.3860 / 0.3844 | 0.3731–0.4161 | 0.0925 | 757 | 23 | 4 |
| Network popular posts, total | 0.3120 / 0.3114 | 0.2968–0.3249 | 0.0644 | 196 | 128 | 4 |
| Network Tools | 0.2830 / 0.2729 | 0.2573–0.3238 | 0.0575 | 88 | 19 | 4 |
After the changes, measured over ten cold network dashboard runs with the widget cache cleared before each request:
| Measure | Server (s) | DB (s) |
|---|---|---|
| Mean | 0.320965 | 0.048232 |
| Median | 0.320114 | 0.048548 |
That is 16.85% lower server time and 47.86% lower database time than the network dashboard baseline. A warm cached request came in at 0.298044 seconds, with 6 Top 10 queries and no popular posts query at all.
Your own numbers will differ. The size of the change depends on how many sites are active and how much history the daily table holds.
Measuring your own network
Use Query Monitor to compare before and after on your own install. The debugging with Query Monitor article covers installing it and locating the Top 10 queries.
Two things matter when taking the measurements:
- Clear the network widget cache before each cold run. Otherwise you measure the cache, not the query.
- Load each page several times and take the median. A single reload on a local server varies enough to hide a real difference.



