Do you have thousands of users on your WordPress site? Look them up fast. Find authors more easily. Speed up your laggy dashboard.
This plugin speeds up the handling of your WordPress registered users, especially when your site has many thousands of them. (Congratulations! Building a successful site with thousands of users is an accomplishment.) With optimized MySQL / MariaDB database techniques, it finds and displays your users more quickly. Your All Users panel on your dashboard displays faster and searches faster. Your All Posts and All Pages panels no longer lag when displaying. And, you can edit your posts to change authorship more efficiently.
Without this plugin WordPress sites with many users slow down drastically on Dashboard pages. It can take many seconds each time you display your Users dashboard panel. It takes just about the same large amount of time to display your Posts or Pages panels. While those slow displays are loading, WordPress is hammering on your site’s MySQL or MariaDB database server. That means your site serves your visitors slowly too, not just your dashboard users.
And, versions of WordPress since 6.0.1 have dealt with this performance problem by preventing changes to the authors of posts and pages in the Gutenberg editor, the classic editor, and the Quick Edit feature. Those recent versions also suppress the user counts shown at the top of the Users panel. This plugin restores those functions.
This plugin helps speed up the handling of those large numbers of users. It does so by indexing your users by adding metadata that’s easily optimized by MySQL or MariaDB. For example, when your site must ask the database for your post-author users, the database no longer needs to examine every user on your system. (In database jargon, it no longer needs to do notoriously slow full table scans to find users.)
When slow queries are required to make sure the metadata indexes are up to date, this plugin does them in the background so nobody has to wait for them to complete. You can set the plugin to do this background work at a particular time each day. Many people prefer to do them overnight or at some other off-peak time.
This is a companion plugin to Index WP MySQL for Speed. If that plugin is in use, this plugin will perform better. But they are in no way dependent on one another; you may use either, both, or of course neither.
I offer several plugins to help with your site’s database efficiency. You can read about them here.
Install and activate this plugin in the usual way via the Plugins panel in your site’s dashboard. Once you have activated it, configure it via the Index for Speed menu item under Users.
wp plugin install index-wp-users-for-speed wp plugin activate index-wp-users-for-speed
If you configure your WordPress installation using composer, you may install this plugin into your WordPress top level configuration with this command.
composer require "wpackagist-plugin/index-wp-users-for-speed":"^1.1"
Yes. Backups are good practice. Still, this plugin makes no changes to your site or database layout. It adds a few non-autoloaded options, and adds rows to wp_usermeta.
Yes.
Yes.
Yes. Indexing your registered users requires us to insert a row in your wp_usermeta tab;e for each of them. We do this work in batches of 5000 users to avoid locking up your MariaDB / MySQL server. Each batch takes server time. Once all index building or refresh batches are complete, your CPU usage will return to normal.
Yes
Plugins like Vladimir Garagulya’s User Role Editor let you assign multiple roles to users. This plugin handles those users correctly.
Standard WordPress puts a wp_capabilities
row in the wp_usermeta
table for each user. Its meta_value
contains a small data structure. For example, an author has this data structure.
array("author")
In order to find all the authors WordPress must issue a database query containing a filter like this one, that starts and ends with the SQL wildcard character %
.
meta_key = 'wp_capabilities' AND meta_value LIKE '%"author"%'
Filters like that are notoriously slow: they cannot exploit any database keys, and so MySQL or MariaDB must examine that wp_usermeta
row for every user in your site.
This plugin adds rows to wp_usermeta
describing each user’s role (or roles) in a way that’s easier to search. To find authors, the plugin uses this much faster filter instead.
meta_key = 'wp_index_wp_users_for_speed_role_author'
It takes a while to insert these extra indexing rows into the database; that happens in the background.
Once the indexing rows are in place, you can add, delete, or change user roles without regenerating those rows: the plugin maintains them.
WordPress’s trac (defect-tracking) system has this ticket # 38741.
Three reasons (maybe four):
Seriously, the microwatt hours of electricity saved by faster web site technologies add up fast, especially at WordPress’s global scale.
Handles WP_User_Query operations with metadata search correctly.
Repair problem handing user queries with role__not_in and role__in search terms.