Almost every time I migrate a WordPress site onto our servers, I find the same thing. The database still carries decisions made years ago. Indexes that were never added, collations that don’t match, and tables running on a storage engine nobody’s used since MySQL 5.5. It’s especially common with sites coming from budget website hosting providers, where there’s very little automation to keep the database healthy.
With these sites, it’s hit-and-miss as to whether the plugins are up-to-date. But the database table schema itself doesn’t upgrade on its own. It’s a time capsule of whatever WordPress, MySQL and the plugins in use were doing when those tables were first created. Nobody goes back and fixes it, because doing it by hand means opening phpMyAdmin and writing SQL, and most people running a WordPress or WooCommerce site don’t want to do that. The SQL is not hard, but the risk is high if something goes wrong. A typo in an SQL statement can make for a really bad day.
The good news is you don’t have to write any SQL. There are three plugins that fix the most common causes of a slow WordPress database.
This is specifically about a database that’s slow. A database that’s grown too big is a different problem with different tools, and I’ll cover that separately another time.
Why an old WordPress database still runs on outdated MySQL defaults
When a plugin creates a database table, it uses whatever indexing, collation and storage engine defaults were sensible at the time. A plugin installed in 2015 might have created tables with no indexes beyond the primary key, or with a collation that doesn’t match the rest of your WordPress database, or using MyISAM storage instead of InnoDB.
None of that gets fixed by updating the plugin, updating WordPress, or moving to better hosting. The table structure just carries on as it was created. It sits there quietly making every query on it slower than it needs to be, until the site has enough content or traffic that the effect becomes noticeable.
Fix 1: Index WP MySQL For Speed adds proper indexes
Index WP MySQL For Speed adds high-performance keys to your WordPress database tables. Install it, go to Tools → Index MySQL Tool, and press “Add Keys Now”. It looks at the tables WordPress actually uses and adds the indexes that speed up the queries WordPress runs most often. If you ever want to undo it, the changes are reversible from the same screen.

It’s a great little plugin, but there’s one thing worth knowing before you rely on it…
If you’re about to install WooCommerce, deactivate this plugin first
If Index WP MySQL For Speed is already active on a site that doesn’t have WooCommerce installed yet, and you’re about to add WooCommerce, deactivate the indexing plugin first. Install and configure WooCommerce as normal, then reactivate the indexing plugin afterwards. Running it while WooCommerce activates can stop the postmeta tables being created properly, which is a fiddly thing to unpick after the fact. It’s a five-second precaution that avoids a genuinely annoying problem.
Fix 2: Database Collation Fix sorts out mismatched collations
Mismatched collations are the kind of thing a website designer would never think to check, which is exactly why they’re worth knowing about. If some tables use utf8mb4_unicode_520_ci and others use utf8mb4_unicode_ci, MySQL has to do extra work reconciling them on any query that joins across those tables, and in some cases it throws an outright error (“Illegal mix of collations”).
Database Collation Fix checks your tables, quietly converting anything using an older collation to the standard, portable one. No configuration, nothing to click beyond activating it.
Fix 3: Simple MyISAM to InnoDB converts old storage engines
MyISAM was the default storage engine for MySQL tables a long time ago. InnoDB has been the sensible default for years now: it handles concurrent access properly, supports transactions, and generally performs better under real-world WordPress and WooCommerce traffic. Sites that have been through several plugin generations often end up with a mix of both, usually because an old plugin created its own tables using whatever the server default was at the time.
Simple MyISAM to InnoDB scans your database, shows you which tables are still on MyISAM, and lets you convert them with a click. Back up your database first. It’s good practice before any table-level change, not a comment on the plugin’s reliability.
When these plugins aren’t enough: it might be a hosting problem
Check out our managed WordPress hosting options
These three plugins fix the most common causes of WordPress database slowness, and they cost nothing beyond a few minutes of your time. If you’ve run all three and the site is still slow, the bottleneck is more likely to be genuinely under-resourced hosting: not enough memory for MySQL to work with, or too many sites fighting over the same database server. That’s a real possibility worth ruling in or out, but it’s a separate conversation from the one this post is about.
