Introduction
Over months and years of publishing content and testing plugins, every WordPress MySQL database accumulates invisible bloat.
Uncleaned post revisions, orphaned postmeta rows, expired transients, spam comments, and leftover tables from deleted plugins slow down backend queries and server response times.
Cleaning the database is one of the highest-impact performance improvements a developer can make for an established WordPress site.
Here is a disciplined protocol for safely trimming database bloat while protecting data integrity.

Always Create a Full Database Backup First
Never execute SQL delete statements or run database optimization tools on a live site without an off-site backup in hand.
Run a command-line mysqldump or use your hosting staging backup before touching a single row.
Verify that the SQL dump file is non-empty and stored outside the public web root.
If anything unexpected breaks, a 60-second database restore will save hours of panic.
Prune Unlimited Post Revisions and Auto-Drafts
WordPress creates a new revision row in the wp_posts table every time an author saves an edit.
For sites with hundreds of blog posts, revisions can easily outnumber published posts 10 to 1, causing wp_posts to balloon to tens of thousands of rows.
You can safely purge legacy revisions and configure wp-config.php to limit future revisions to 3 or 5 per post.
Adding define('WP_POST_REVISIONS', 5); stops infinite table growth permanently.
Flush Expired Transients and Orphaned Postmeta
Transients are temporary cache records stored in wp_options. When plugins don't clean them up on expiry, thousands of autoloaded rows clog the options table.
Orphaned postmeta rows occur when a post or product is deleted, but its associated metadata entries remain in wp_postmeta.
Deleting unattached postmeta rows and purging expired transients immediately frees up index RAM in MySQL.
Use WP-CLI command wp transient delete --expired to clear stale rows safely without raw SQL risks.
Identify and Drop Leftover Plugin Tables
When you deactivate and delete a WordPress plugin from the dashboard, many plugins leave their custom database tables behind.
Check phpMyAdmin or your MySQL CLI for tables from security plugins, SEO tools, analytics trackers, or page builders you no longer use.
Inspect table contents to confirm they belong to discarded plugins, then drop them to trim backup file sizes.
Keep core WordPress tables untouched: wp_posts, wp_postmeta, wp_options, wp_users, wp_usermeta, wp_terms, and wp_term_taxonomy.
Frequently Asked Questions
How often should a WordPress database be optimized? — For high-traffic sites or stores, a monthly automated cleanup is ideal. For standard business sites, once every quarter is plenty.
Will deleting revisions delete my published blog posts? — No. Revisions are historical drafting snapshots; your live published posts remain completely intact.
Does database optimization improve Google PageSpeed scores? — Yes, by reducing Time to First Byte (TTFB), your server responds faster to incoming requests.